[gambit-list] __cleanup() problem (OS X 10.6.6 / Gambit-C 4.6.0)

David Dreisigmeyer dwdreisigmeyer at gmail.com
Wed Jan 12 08:44:22 EST 2011


This wasn't used with Python.  I started with modifying the client.c
file included in gambit/tests and proceeded from there.  I'll check on
commenting out the call to release_fn soon.

Thanks Marc,

-Dave

On Wed, Jan 12, 2011 at 8:36 AM, Marc Feeley <feeley at iro.umontreal.ca> wrote:
>
> On 2011-01-12, at 8:17 AM, David Dreisigmeyer wrote:
>
>> It could be the call to ___release_foreign (in c_intf.c) that's
>> causing the trouble.  The calling sequence is:
>>
>> ___cleanup (setup.c) =>
>> ___cleanup_mem (mem.c) =>
>> free_still_objs (mem.c) =>
>> ___release_foreign (c_intf.c)
>>
>>
>> With this (modified) snippet from free_still_objs:
>
> As far as I know, in the unmodified Gambit, there are no foreign objects with release functions.  So I don't understand why you get release_fn != NULL.  So if you comment out the call to the release_fn, does the problem go away?
>
>>
>> Commenting out the call to ___cleanup_mem in ___cleanup, the code
>> still fails on ___cleanup_os.  Here it seems to have something to do
>> with ___device_group_cleanup in os_io.c.  Now the call sequence is:
>>
>> ___cleanup (setup.c) =>
>> ___cleanup_os (os.c) =>
>> ___cleanup_io_module (os_io,c) =>
>> io_module_cleanup (os_io,c) =>
>> ___device_group_cleanup (os_io.c)
>>
>> Here it seems to be a problem with the line:
>>
>> if (___device_cleanup (dgroup->list) != ___FIX(___NO_ERR))
>>
>
> It would be interesting to know which device is failing to cleanup properly.  My hunch is that Python is closing a file descriptor or changing an attribute of the file descriptor that Gambit expects to be in a particular state when it cleans up, so when it tries to close it (or call select on it), a failure is reported.  The failure will happen in one of the ___device_XXX_close_raw_virt functions in lib/os_io.c or lib/os_tty.c (most probably in ___device_file_close_raw_virt or ___device_tty_close_raw_virt).
>
> Marc
>
>



More information about the Gambit-list mailing list