-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 27-Oct-06, at 3:30 AM, Andrew Lentvorski wrote:
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
MAX_CONDVARS is badly named. It is really the maximum number of devices that can simultaneously be selected by ___device_select. In your case a low value, say 10 to 100, would be sufficient.
Marc