Opened 12 years ago
Last modified 8 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 Changed 12 years ago by dmik
comment:2 Changed 9 years ago by bird
- Milestone set to libc-0.7
comment:3 Changed 9 years ago by bird
- Component changed from baselayout to libc-backend
comment:4 Changed 8 years ago by abwillis
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).