-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Segfault when running x86 Docker image from Arm on macOS #54446
Comments
Is your Docker setup to use QEMU or Rosetta? Also can you try whichever one it wasn't using in the original bug? :) |
TBH, the fact that it crashes both with Rosetta and QEMU makes me want to get to the bottom of this - but I am hindered by one simple issue: I am not allowed to install Docker Desktop on M1 Mac I have. I will look for possible solutions - but effectively this means we can't debug the issue right now. What we could try to do is the following: could you try to enable core dumps inside the container @dnys1? I don't know if normal things like I still think this is most likely a Docker own issue and should probably be reported to them. Apparently they fixed a bunch of Rosetta issues recently https://www.docker.com/blog/docker-desktop-4-26/ and maybe more are still lurking inside. |
Thanks for the tips! I spent the better part of the last hour trying to enable core dumps on my Mac (apparently Docker uses host config for core dumps). Apple sure doesn't make it easy--and I'm sad to report that I was ultimately unsuccessful 😅 if you know of a good way, I'd be happy to try it! |
I did try again with Rosetta enabled on the latest Docker (4.26.1) and ran into the same issue :/ Stack dump
|
I didn't have a chance to test it out too much, but after trying to understand some related code, I tried updating the Dockerfile's I do not yet have any idea what dual mapping is, but perhaps it's not supported (or at least not always?) in Docker containers and the check to disable it needs to be expanded? Or could this just be hiding a separate issue? |
@parlough nice! interesting find. that saves us a lot of effort trying to diagnose this. My guess would be that dual mapping causes issues with flushing of translation caches so emulator sometimes runs stale / nonsense code. I have also found this change: dotnet/runtime#70912 which seems related. Honestly, I am not sure I want to bother with trying to detect whether Linux process is running emulated on Mac OS X and instead just suggest we nuke the whole dual mapping code: https://dart-review.googlesource.com/c/sdk/+/344581. The reason it was added does not exist anymore anyway. cc @a-siva |
We are no longer using Dart VM in a setting where this matters as a security measure and it just complicates portability for no benefit. There is an indication that it is causing problems when running Linux build of Dart VM under Docker on Mac OS X. Fixes #54446 This CL also disables --write-protect-code on non-Mac OSes. Cherry-pick: https://dart-review.googlesource.com/c/sdk/+/344581 Cherry-pick: https://dart-review.googlesource.com/c/sdk/+/345303 Cherry-pick-request: #54583 Change-Id: I37fe4162b373d64e84d7d73de9d8d9355e5a31c8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345663 Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Slava Egorov <vegorov@google.com>
Whilst this ticket is closed I noticed that dart:beta now works with amd64 it still crashes with armv7. To recreate use the same instructions in the issue but update the Dockerfile to use dart:beta
Reopen this issue or open a new one ? |
@cconstab that's a different one. please do file a separate bug. This looks like a variation of #54198 - though it looks strange. Could you include: |
Issue Raised for Armv7 |
Unsure if related: #54198
Running
dart pub get
in an x86_64 Docker image on macOS Arm results in a segfault. Happens ondart:stable
anddart:beta
, though the output ondart:beta
(3.3.0-174.3) is more helpful.dart:stable dump
dart:beta dump
Reproduction steps (from an M2 Mac)
dart create -t server-shelf docker_test
cd docker_test
docker build --platform=linux/amd64 .
The text was updated successfully, but these errors were encountered: