dbhi / qus

qemu-user-static (qus) and containers, non-invasive minimal working setups

Home Page:https://dbhi.github.io/qus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Working on docker + dotnet builds with both QUS and setup-qemu-action. Qus throws segmentation fault.

devedse opened this issue · comments

Hey,

I'm currently trying to setup some builds for quite a complex thing I'm working on (an image optimizer which runs x86 windows applications in an ARM linux container).

I actually managed to get it all working. The strange thing is though that for some reason I can only get the build to work with the github actions task named: setup-qemu-action. Whereas I can only get running the container working with qus.

If I build the container using qus then I run into a Segmentation fault. If I run the container with setup-qemu-action I also run into a segmentation fault.

This issue I'd like to focus on building the container is not working with qus but it is working with the github task setup-qemu-action.

Here's the build where you can see it going wrong:
https://github.com/devedse/DeveImageOptimizer/runs/2343006390?check_suite_focus=true

The yaml:

  build_docker_linux_qusbuild:
    needs: generate_version_number
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Login to Docker Hub
      uses: docker/login-action@v1
      with:
        username: devedse
        password: ${{ secrets.DOCKERHUBTOKEN }}
    - name: Setup qus
      run: |
        docker run --rm --privileged aptman/qus -s -- -p
    - name: Set up Docker Buildx
      id: buildx
      uses: docker/setup-buildx-action@v1
    - name: Builder instance name
      run: echo ${{ steps.buildx.outputs.name }}
    - name: Available platforms
      run: echo ${{ steps.buildx.outputs.platforms }}
    - name: Run Buildx
      run: |
        export VERSION=1.0.${{needs.generate_version_number.outputs.build_number}}
        echo Version: $VERSION
        docker buildx build -f DeveImageOptimizer.ConsoleApp/Linux.Dockerfile --build-arg BUILD_VERSION=$VERSION --platform linux/arm64,linux/amd64 -t devedse/deveimageoptimizerconsoleapp:${{needs.generate_version_number.outputs.build_number}} -t devedse/deveimageoptimizerconsoleapp:latest --push .

Build output:

#24 [linux/arm64 build 9/9] RUN dotnet build "DeveImageOptimizer.ConsoleApp.csproj" -c Release -o /app/build
#24 sha256:448b9fe5ecc129143fcabee60dc530e38619eb2a6a7b5413e1edebca8e4afd0f
#24 67.45 /usr/share/dotnet/sdk/5.0.202/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : qemu: uncaught target signal 11 (Segmentation fault) - core dumped [/src/DeveImageOptimizer/DeveImageOptimizer.csproj]
#24 68.04 
#24 68.04 Build FAILED.
#24 68.04 
#24 68.04 /usr/share/dotnet/sdk/5.0.202/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : qemu: uncaught target signal 11 (Segmentation fault) - core dumped [/src/DeveImageOptimizer/DeveImageOptimizer.csproj]
#24 68.04     0 Warning(s)
#24 68.04     1 Error(s)
#24 68.05 
#24 68.05 Time Elapsed 00:00:47.97
#24 ERROR: executor failed running [/bin/sh -c dotnet build "DeveImageOptimizer.ConsoleApp.csproj" -c Release -o /app/build]: exit code: 1

#9 [linux/arm64 base  5/10] RUN if [ "linux/arm64" = "linux/arm64" ]; then         git clone --depth 1 --recurse-submodules -j8 https://github.com/devedse/hangover.git /root/hangover ;     fi
#9 sha256:98348fc916409de984e4adf6413ee670780870ea54fca0ab5a77b62aa1eecdc6
#9 CANCELED
------
 > [linux/arm64 build 9/9] RUN dotnet build "DeveImageOptimizer.ConsoleApp.csproj" -c Release -o /app/build:
------
Linux.Dockerfile:91
--------------------
  89 |     COPY . .
  90 |     WORKDIR "/src/DeveImageOptimizer.ConsoleApp"
  91 | >>> RUN dotnet build "DeveImageOptimizer.ConsoleApp.csproj" -c Release -o /app/build
  92 |     
  93 |     FROM build AS publish
--------------------
error: failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c dotnet build "DeveImageOptimizer.ConsoleApp.csproj" -c Release -o /app/build]: exit code: 1
Error: Process completed with exit code 1.