Marc Feeley wrote:
My best guess is that the function ___device_select in lib/os_io.c, which implements a timed blocking on a set of devices, must be returning an error.
I am now going to check your suggestion. It looks like there was a stack overflow first caused by the large allocation due to MAX_CONDVARS being 8192.
How may condvars does the system actually need to be useful?
A quick analysis shows the following functions as allocating quite a bit of stack: 65556 ___os_condvar_select 32820 ___device_select 4524 ___H__20___kernel 1756 ___H__20___num
I'm going to hoist the stack allocation from os_condvar_select into a something which will pull from the data segment(although, I still need to cut back on its size). device_select is probably in the same boat, as well (and is toggled by MAX_CONDVARS, too).
-a