Am 14.03.14 13:56, schrieb Mathias Bauer:
Hi,
once you find it, the solution quite often is easy. :-)
The culprit was that unwind-arm.h in libobjc2 can't cope with unwind
states that have been "or-ed" with _US_FORCE_UNWIND.
Defining it in this file and replacing
switch(state)
with
switch(state & ~_US_FORCE_UNWIND)
helps.
Without that, the PR wrapper in this header file always returns
_URC_FAILURE. I overlooked that in the first place because I only looked
whether internal_objc_personality was called.
Now the test case works - at least when run inside gdb. I still have to
find out why it core dumps without gdb.
And this turns out to be a problem of interpreting the LSDA.
The stack frame in question belongs to [NSOperation start].
When the PR __gnu_objc_personality_v0 is called for it, the
internal_objc_personality function calls check_action. The
resolve_indirect_value function returns something that - when
interpreted as a char* - leads to a crash.
I wonder whether the internal_objc_personality needs some adjustments
for _US_FORCE_UNWIND here.
I will continue investigating this, but I would appreciate any hints
that could help me speed this up. My wife probably will get angry if it
takes the whole weekend. ;-)
Regards,
Mathias
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep