[Stackless] Bug Report: Bus error on Mac OS X Snow Leopard (x86_64)
Jeff Senn
senn at maya.com
Wed Dec 8 15:28:53 CET 2010
On Dec 7, 2010, at 10:08 PM, Richard Tew wrote:
> On Mon, Dec 6, 2010 at 6:55 AM, Daniel Norberg <daniel.norberg at gmail.com> wrote:
>> I've discovered a possible bug in Stackless 2.6 on Mac OS X Snow Leopard.
>>
>> Running the following script using a x86_64 stackless on Mac OS X Snow Leopard produces a bus error.
>>
>> import stackless
>> stackless.tasklet(lambda:None)().remove()
>>
>> Compiling stackless using CC="gcc -arch i386" makes the problem go away so it seems to be x86_64 specific.
>
> Hi Daniel,
>
> This just involves us trying to reproduce and debug it on a non-MacOS
> computer (none of us have one), or getting shell access to one to do
> so if we cannot.
>
> A solid reproduction case and a clear description of what code you are
> seeing the problem in, is more than sufficient. I expect the call
> stack would be partly gibberish and not that helpful anyway.
>
> Cheers,
> Richard.
Richard - I suspect you meant you don't have a MacOS machine...
I do, and I verified this does occur in 2.6.5 and (since I happened to have a version built with some debugging)
quickly concluded that it happens during Py_Finalize (in particular when the dance
to do tasklet stack cleanup happens with the "main" tasklet). Someone's stack is corrupt after
an slp_restore_cstack.
However, this does NOT occur in the branch of Stackless 2.7 that I have around,
so my interest in pursuing this is pretty low... (if someone has an idea where
to look specifically I could devote a bit of time to it -- but not much...)
-------snip--------
Python 2.6.5 Stackless 3.1b3 060516 (release26-maint:87131M, Dec 8 2010, 08:37:00)
> climb_stack_and_transfer (cstprev=<value temporarily unavailable, due to optimizations>,
> cst=<value temporarily unavailable, due to optimizations>, prev=<value temporarily
> unavailable, due to optimizations>) at ./Stackless/core/slp_transfer.c:104
> 104 }
> (gdb) n
> 0x000000010011499e in dyld_stub___stack_chk_fail ()
> (gdb) s
> Single stepping until exit from function dyld_stub___stack_chk_fail,
> which has no line number information.
>
> Program received signal SIGABRT, Aborted.
> 0x00007fff868b0616 in __kill ()
More information about the Stackless
mailing list