|
From: Ned K. <ne...@bi...> - 2004-03-29 20:32:30
|
I've gotten a segfault a couple of times and have traced it down to where it happens in dataHandler() in sqUnixSocket.c. It's at the line that says if (flags & AIO_R) notify(pss, READ_NOTIFY); It appears as if pss is NULL there. Though we can certainly add a check there, it seems like we should figure out why this is happening. I have seen it occur when I tried to send a changeset to the list and I got a walkback because of an inability to reach the mail server (I'm not sure why this happened; it could be another bug). I then told it to retry (or proceed?) and I got the segfault. I wish I could make this happen again, but can any of you think of why the socket handle might be getting destroyed prematurely? It looks like this could happen if the socket were marked as Invalid without being disabled in the aio system and then someone called sqSocketConnectionStatus (which will clear out the pss pointer). So is there a problem in acceptHandler() where if accept() returns <0 and the errno is not ECONNABORTED we mark the socket as Invalid and close the fd but don't aioDisable() it? -- Ned Konz http://bike-nomad.com GPG key ID: BEEA7EFE |