Add ARC and ObjC++ variants of ExceptionTest#138
Add ARC and ObjC++ variants of ExceptionTest#138triplef wants to merge 2 commits intognustep:masterfrom
Conversation
6219249 to
6a751d8
Compare
|
Added another ObjC++ test which throws small NSString objects, leading to the following backtrace: Not sure if these are separate issues or not. |
6a751d8 to
a25bbb1
Compare
|
Unfortunately it looks like these are still failing after the fix for #146, but the issue here might also be completely unrelated. |
|
These were failing for a different reason. The Nested tests were also failing because you're calling -dealloc on an NSConstantString... |
This makes no difference to existing tests, but is needed for the ones in #138
This makes no difference to existing tests, but is needed for the ones in #138
|
It looks as if there's still an issue with libsupc++, though this is now working with libcxxrt... |
|
It looks as if some of the more complex cases are causing problems because clang is emitting |
libsupc++ is more aggressive about internal consistency checks than libcxxrt, so we need to be more careful in the interop. The tests from PR #138 now pass for me on Debian with libsupc++.
libsupc++ is more aggressive about internal consistency checks than libcxxrt, so we need to be more careful in the interop. The tests from PR #138 now pass for me on Debian with libsupc++.
|
Looks as if these tests all pass now with the Itanium ABI, but they're failing with the Win32 version. That's a bit surprising, because the Win32 EH implementation is a very thin wrapper around C++ exceptions on Windows, so it's probably caused by bugs in clang. @DHowett-MSFT, did you ever have time to look at the clang handling of |
0857f8f to
b6ef305
Compare
|
Thank you for looking into this! I’ve rebased the branch on the lastest master.
Good catch, fixed.
Is this a general issue with @finally, or specific to Windows? |
I think the funclets for cleanups are incorrect in the SEH codegen (Windows only). |
|
Please can you update this branch? Some of the SEH stuff may have been fixed in a newer clang build. |
b6ef305 to
b1622ad
Compare
|
I rebased the branch, but looks like there are still some issue. |
|
Very odd set of failures! Windows has a completely different EH model to everything else, so I'm not surprised if there are tests that fail there but not anywhere else. With the new test matrix; however, this appears fine with libcxxrt on FreeBSD and with libsupc++ on Linux but not with libc++abi on Linux. I wonder if it's the same bug and, if so, if it's easier to debug the Linux failure than the Windows one... |
|
Looks as if the non-ARC variant is failing because it's missing a double dereference on the thrown object with libc++abi. @ngrewe? |
Adds ARC and ObjC++ variants of ExceptionTest.
Adapted to throw short NSString objects which should fit in a small object, as it seems to expose a different ARC issue.
b1622ad to
8f1a545
Compare
The ObjC++ tests fail for me on FreeBSD 12.0 in the following way, which I think exposes issues in ObjC++ EH / ARC.
I also saw that the existing ObjC++ tests were not run against the legacy ABI – does that not support ObjC++ EH? Let me know if I should exclude the new ObjC++ tests from the legacy tests.