linux_socketcall() returns Resource temporarily unavailable

Clay McClure clay at cuter.daemons.net
Sat Apr 5 17:09:33 PST 2003


Hello,

I have just installed FreeBSD 4.8-RELEASE and decided to try to run a Quake3
server using Linux emulation.  I've found that the q3ded program consumes 99%
of the CPU, leading me to believe there may be a problem with the program or
with the Linux emulation feature in FreeBSD.

Some details about my installation:

> uname -a
FreeBSD cutest.daemons.net 4.8-RELEASE FreeBSD 4.8-RELEASE #0: Mon Mar 31 02:11:00 GMT 2003     root at freebsd-stable.sentex.ca:/usr/obj/usr/src/sys/GENERIC  i386

> pkg_info | grep linux
linux_base-7.1_2    The base set of packages needed in Linux mode

The top output:

CPU states: 16.7% user,  0.0% nice, 83.3% system,  0.0% interrupt,  0.0% idle
Mem: 34M Active, 1712M Inact, 155M Wired, 103M Cache, 199M Buf, 5148K Free
Swap: 4080M Total, 4080M Free

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
93552 clay      58   0 80156K  4260K RUN     20:50 97.07% 97.07% q3ded
93568 clay      29   0  1880K  1176K RUN      0:00  5.78%  1.71% top

truss output:

gettimeofday(0xbfbfb9d8,0x0)      = 0 (0x0)
linux_time(0xbfbfee84)            = 1049588547 (0x3e8f7343)
gettimeofday(0xbfbfee7c,0x0)      = 0 (0x0)
linux_socketcall(0xc,0xbfbfb970)  ERR#35 'Resource temporarily unavailable'

The q3ded program appears to be in a loop, as it keeps executing these same
system calls. I believe the linux_socketcall() corresponds to recvfrom() since
q3ded creates a UDP socket and waits for incoming messages on that port.

I searched Google and the FreeBSD mailing list archive but could only find
one thread about this problem, but it was from December 2000 and did not
mention a fix.

Does anyone know what is causing this problem and how to fix it?

Thanks,

Clay McClure

Please CC: me as I am not subscribed to the list.


More information about the freebsd-questions mailing list