-
-
Notifications
You must be signed in to change notification settings - Fork 409
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 linux musl tests on Arm #3882
Conversation
6d49c84
to
c0d8814
Compare
I notice that the tests didn't pass for musl. |
Yup. We appear to have a problem when running on musl. |
91a496a
to
b55cd24
Compare
Setting up alpine on a Pi to test this looks pretty irritating. My first try might be to see if docker ran run on Raspbian. |
b55cd24
to
cfef7d5
Compare
rebased against |
cfef7d5
to
bf8121c
Compare
bf8121c
to
2c0d6a8
Compare
It looks like it is the test harness that is segfaulting. Interesting. |
c1d36af
to
1b818e8
Compare
1b818e8
to
4e3086e
Compare
17a9cfc
to
79738c3
Compare
The image used for this is based on Alpine 3.12 and needs to be updated to be based on 3.16. |
@ergl could you try running this in docker on an arm machine to debug what is going on? it appears the runner crashes, i think, but i don't have any way to debug this easily. |
@SeanTAllen Sure, I can try it tomorrow when I have some time off. |
@SeanTAllen I managed to reproduce the segfault but unfortunately ran out of time to debug the problem. To trigger a segfault, it is enough to run the runner:
I didn't have |
Thanks @ergl. Will you be doing the next step? |
@SeanTAllen I can, but not until next week. |
I was looking at #1206 and noticed that when Benoit did the porting, that in a few places, he changed the atomics usage unintentionally from what it was previously. This commit reverts those (almost assuredly) inadvertent changes. I can't guarantee that there are no other bits that were incorrect in that commit, but I know these bits where. I believe from a cursory glance that these could do "very bad things" on weakly ordered memory platforms like Arm.
Here's the backtrace I get from the runner:
It seems like the source of the failure is here: ponyc/src/libponyrt/lang/posix_except.c Line 37 in f6e1b60
So it seems like we're doing something wrong when it comes to exception unwinding. This can be verified with this minimal Pony program that also causes the segfault: actor Main
new create(env: Env) =>
try
error
end The bactrace for the above program:
Edit: this was tested against the latest commit of this branch (1e82be3) |
Given this only happens on Arm musl, I don't feel confident saying that we are doing something wrong. |
Closing as this requires cirrus CI that we are moving away from |
No description provided.