Opened 17 years ago
Last modified 13 years ago
#191 new defect
bsdselect() screws up on SMP
Reported by: | dmik | Owned by: | bird |
---|---|---|---|
Priority: | normal | Milestone: | libc-0.7 |
Component: | libc-backend | Version: | |
Severity: | normal | Keywords: | |
Cc: |
Description
Several users of VirtualBox (that currently uses LIBC 0.6.3) reported that VirtualBox stops working on SMP machines after some random (but short) amount of time. The investigation has shown that the IPC event polling thread (responsible for interprocess message exchange) just exits because PR_Poll() from NSPR returns -1 and errno set to 14 (EFAULT).
PR_Poll() uses bsdselect() on OS/2 when BSD_SELECT is defined and os2_select() otherwise. Switching to os2_select() completely solves the problem which is a clear evidence for me that something is wrong with bsdselect().
I can't actually see after quickly looking at tcpipver.c where SMP could affect the code so the problem may also reside inside SO32DLL.DLL.
Change History (4)
comment:1 by , 17 years ago
comment:2 by , 14 years ago
Milestone: | → libc-0.7 |
---|
comment:3 by , 14 years ago
Component: | baselayout → libc-backend |
---|
comment:4 by , 13 years ago
Is this still a problem even if using the tcpip32.dll that Steven Levine released to address SMP issues?
Well, the DLL is actually TCPIP32.DLL since we don't define TCOV40HDRS (btw, the original Mozilla builds do define this).