-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Task failure aborts app on OS X 10.9 #6849
Comments
Current belief is that the task_info for
This worked on 10.8 due to bugs in the libc++abi that is used there. I don't know why this works on Linux. |
After modifying rustrt.def.in to export |
@kballard Does it work if you change the throw type to an int instead of a rust_task*? |
@brson No. Throwing an
|
Not going to be fixed for 0.7 |
mmm. OS X support for 10.9 seems important. Nominating for Maturity Milestone #3, Feature Complete. |
Accepted for milestone 3, feature-complete |
This appears to happen because OS X's libunwind is unable to unwind through |
Removing |
And for sake of completeness, if removing |
@bdash wrote this:
Is |
I've since learnt that there's a specific pattern that can be emitted in the DWARF CIE or FDE that will inform the OS X linker it shouldn't attempt to convert the DWARF unwind information to its compact unwind format. The pattern the linker looks for is the return address register being saved twice to the same location. This looks like it should be easy to accommodate in |
OS X 10.9 is probably going to come out in 2 days. This should be fixed now if possible. |
Right now we don't have segmented stacks enabled, but we recently did indeed enable use of |
OS X 10.9's linker has a bug that results in it failing to preserve DWARF unwind information when passed the -no_compact_unwind flag. This flag is passed on OS X because the unwind information for __morestack cannot be represented by the compact unwind format. We can work around this problem by using a more targeted approach to disabling compact unwind information. The OS X linker looks for a particular pattern in the DWARF unwind information and will not attempt to convert the unwind information to the compact format. The pattern in question is the return address register being saved twice to the same location. Fixes #6849.
Dogfood and CI fixes The CI fix is practically rust-lang#6829 rebased and squashed into one commit Dogfood fix is a follow up of rust-lang#6802 r? `@matthiaskrgr` for lintcheck changes (best reviewed with whitespace changes hidden) changelog: none
A failed assertion inside a
task::try
aborts on 10.9 with the following error:This appears to be due to the fact that libc++abi is different in 10.9 than in 10.8.
The text was updated successfully, but these errors were encountered: