Opened 12 years ago

Last modified 9 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:


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

Well, the DLL is actually TCPIP32.DLL since we don't define TCOV40HDRS (btw, the original Mozilla builds do define this).

comment:2 Changed 10 years ago by bird

Milestone: libc-0.7

comment:3 Changed 10 years ago by bird

Component: baselayoutlibc-backend

comment:4 Changed 9 years ago by abwillis

Is this still a problem even if using the tcpip32.dll that Steven Levine released to address SMP issues?

Note: See TracTickets for help on using tickets.