![]() |
> Program received signal SIGSEGV, Segmentation fault. > 0x12004d62c in Dispatcher::notify (this=0x12018fd20, nfound=1, > rmaskret=@0x11ffff790, wmaskret=@0x11ffff810, > emaskret=@0x11ffff890) at Dispatcher.c++:666 > 666 int status = _rtable[i]->inputReady(i); The kernel has reported that file descriptor i is ready for reading, but, in spite of the fact that the kernel was presumably told that the file descriptor was of interest, there is no handler routine, for that file descriptor, set up in the array of handlers (_rtable). It is also just possible that _rtable has not been allocated, as the result of an initialisation fault (e.g. from trying to force things to go into shared libraries on a system that doesn't support shared C++ libraries well - only SGI is known to support them). Information on the value of _rtable and, preferably, the assembler level code and registers at the point of failure, would probably select between these causes. The value of i might give a clue as to the source of the input, although one would need to work out the order in which FDs were opened. There is currently only the one FD to examine, but it is just possible that an lower numbered FDs read handler has removed the read handler for the failing FD. If the alpha refers to a digital alpha, or you are using an alpha (odd numbered) kernel, there may be a bug in the select system call. The code is essentially in the idle loop of the program where it waits for I/O events. See also man select.