-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ARC and ObjC++ variants of ExceptionTest #138
base: master
Are you sure you want to change the base?
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.