Today was the last day before leaving for the CIFS conference in Bellevue, WA followed by a week of vacation in Yellowstone National Park. As it is with these last days, the MacOS X beta was supposed to be ready today as well. Alas, as it turned out there was just that show stopper bug that turned up late in the afternoon after we did already put a version on our web server (not visible if you do not know the path). The TNT folks delivered a set of new CD's with the latest MacOS X 10.1 build, and to our horror a few programs did just core dump upon starting up.
Examining the core dump showed svc_getreqset as the leaf function on the stack, this immediatly rang a bell with me. I had that problem before, but with the change from AIX 4.2 to 4.3. I looked into sys/types.h of the new MacOS X version and indeed, they increased FD_SETSIZE from 256 to 1024. This is no bad idea as 256 is rather small, but the design of the SUN RPC library is really bad in this regard, as it passes the address of an fd_set but not how large it is. From the application side it is also difficult to prevent this, as there is no way to find out which value of FD_SETSIZE was used to compile the C library. As it stands, we did simply define FD_SETSIZE to be 1024 even as we are still compiling on the older system, this way the structure is large enough.
As we had to clean out all object code the build is still running and we will have to put it up on the web server on monday. One day we will have to get rid of the elaborate makefile system and use some more sane perl scripts to do the build, this way it would be easier to distribute the build across multiple systems.