User: Password:
Subscribe / Log in / New account

2.6.31 merge window, week 1

2.6.31 merge window, week 1

Posted Jun 18, 2009 15:55 UTC (Thu) by spotter (subscriber, #12199)
Parent article: 2.6.31 merge window, week 1

how are reads to /dev/zero being interruptable by a signal an abi change?

i.e. any program that ran b4 will still run, it could just be caused to execute along a different path, that doesn't seem like an ABI change to me, but perhaps I'm confusing the term.

(Log in to post comments)

2.6.31 merge window, week 1

Posted Jun 19, 2009 2:30 UTC (Fri) by jamesh (guest, #1159) [Link]

If a read is interrupted by a signal, then it is cut short. So if an application was reading from /dev/zero but not prepared to handle a short read, then it could break with the newer kernel.

Whether such applications exist is open to debate.

2.6.31 merge window, week 1

Posted Jun 19, 2009 2:39 UTC (Fri) by spotter (subscriber, #12199) [Link]

I understand that. But that seems like a change in API semantics, not in the ABI.

2.6.31 merge window, week 1

Posted Jun 19, 2009 11:51 UTC (Fri) by jamesh (guest, #1159) [Link]

The API semantics can make up part of the ABI.

As an example, most people would consider changing the open() system call to return a random integer to be an ABI break. With such a change, the system call would still be take the same arguments and have the same return type so the change is arguably one of semantics.

/dev/zero: ABI change?

Posted Jun 20, 2009 0:19 UTC (Sat) by giraffedata (subscriber, #1954) [Link]

Never mind API semantics. It's an ABI semantic change.

The only difference between an API and an ABI is that the API applies to source code and the ABI applies to the executable ("binary", e.g. ELF file).

An API change means that source code that used to be able to expect a certain behavior, once compiled and run, can't anymore.

An ABI change means that an executable that used to be able to expect a certain behavior when run, can't anymore.

The behavioral change might be that the program used to run and now won't even start because the format of the ELF header changed, but it might also be that the kernel returns half the requested data for a read() where it returned all of it before.

/dev/zero: ABI change?

Posted Jun 21, 2009 2:09 UTC (Sun) by spotter (subscriber, #12199) [Link]

ok, you're right, I buy that explanation.

Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds