- Build and run a windows .NET Core app on Debian (Exec format error)
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
- О разрядности дистрибутивов Linux и о программ
- Запуск ARM файлов в Linux
- Заключение
- Exec format error : Cannot start container : exec format error #10668
- Comments
- lresende commented Feb 9, 2015
- phemmer commented Feb 9, 2015
- lresende commented Feb 10, 2015
- aleksey-korolev commented Oct 22, 2015
- Di3g0 commented Jan 17, 2016
- thaJeztah commented Jan 17, 2016
- jasetom commented Mar 3, 2016
- orian commented Apr 3, 2016
- GlenKPeterson commented Apr 25, 2016
- orian commented Apr 26, 2016 •
- hefekranz commented Aug 29, 2016
- pcgeek86 commented Sep 16, 2016
- Oomi commented Dec 6, 2016 •
- badal1443 commented Apr 12, 2017
- thaJeztah commented Apr 12, 2017
- exec user process caused «exec format error» when run container with CMD on RHEL #475
- Comments
- gouyang commented Feb 13, 2018
- TomSweeneyRedHat commented Feb 13, 2018
- rhatdan commented Feb 27, 2018
- gouyang commented Feb 28, 2018 •
- rhatdan commented Feb 28, 2018
- gouyang commented Mar 1, 2018
- TomSweeneyRedHat commented Mar 2, 2018
- gouyang commented Mar 3, 2018
- gouyang commented Mar 3, 2018
- TomSweeneyRedHat commented Mar 3, 2018
- momocow commented Apr 17, 2018 •
- khalidumarr commented Jun 17, 2018
- pixdrift commented Jun 17, 2018
- khalidumarr commented Jun 17, 2018
- ealexhaywood commented Jul 16, 2018
- TrayserCassa commented Jul 23, 2018
- rhatdan commented Jul 23, 2018
- TrayserCassa commented Sep 4, 2018
- rhatdan commented Sep 4, 2018
- adambant commented Sep 14, 2018
- TomSweeneyRedHat commented Sep 15, 2018
- Kiran01bm commented Sep 18, 2018 •
Build and run a windows .NET Core app on Debian (Exec format error)
I have this ASP .Net Core app which is written on a windows machine using latest Visual studio. Now I need to build and host this app on a Linux machine (Debian latest version).
Project .csproj looks like this:
Installed dotnet core 3.1 on my Linux using this link.
The output after running dotnet build is:
Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Core Copyright (C) Microsoft Corporation. All rights reserved.
Determining projects to restore. Restored /var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj (in 1.37 sec). /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error MSB3883: Unexpected exception: [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : System.ComponentModel.Win32Exception (8): Exec format error [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.Start() [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at Microsoft.Build.Utilities.ToolTask.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at Microsoft.CodeAnalysis.BuildTasks.ManagedCompiler.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj]
/root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error MSB3883: Unexpected exception: [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : System.ComponentModel.Win32Exception (8): Exec format error [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at System.Diagnostics.Process.Start() [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at Microsoft.Build.Utilities.ToolTask.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] /root/.nuget/packages/microsoft.net.compilers/3.5.0/tools/Microsoft.CSharp.Core.targets(59,5): error : at Microsoft.CodeAnalysis.BuildTasks.ManagedCompiler.ExecuteTool(String pathToTool, String responseFileCommands, String commandLineCommands) [/var/lib/go-agent/pipelines/XXXXXX-pipeline/XXXXXX.DAL/XXXXXX.DAL.csproj] 0 Warning(s) 7 Error(s)
What is the problem?
Also dotnet —info output:
.NET Core SDK (reflecting any global.json): Version: 3.1.301 Commit: 7feb845744
Runtime Environment: OS Name: debian OS Version: 10 OS Platform: Linux RID: debian.10-x64 Base Path:
/usr/share/dotnet/sdk/3.1.301/
Host (useful for support): Version: 3.1.5 Commit: 65cd789777
.NET Core SDKs installed: 3.1.301 [/usr/share/dotnet/sdk]
.NET Core runtimes installed: Microsoft.AspNetCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 43 bits physical, 48 bits virtual CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 4 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family:
6 Model: 79 Model name: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz Stepping: 1 CPU MHz:
2197.455 BogoMIPS: 4394.91 Hypervisor vendor: VMware Virtualization type: full L1d cache: 32K L1i cache:
32K L2 cache: 256K L3 cache: 30720K NUMA node0 CPU(s): 0-3 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt arat md_clear flush_l1d arch_capabilities
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.
Причинами данной ошибки могут быть:
- попытка запустить 64-битный файл на 32-битной системе
- файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
- вы пытаетесь выполнить не исполнимый файл, а ссылку
- файл размещён в совместной (shared) папке
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Ещё один пример:
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
- скачать файл подходящей для вас битности и архитектуры
- если вы самостоятельно компилировали файл из исходного кода, то заново скомпилируйте для процессора вашей архитектуры
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Exec format error : Cannot start container : exec format error #10668
Comments
lresende commented Feb 9, 2015
Build an image where you add a boostrap.sh starting with # which will be run when the container starts.
When docker run, it will produce the following error
exec format errorFATA[0000] Error response from daemon: Cannot start container d51c63c1ab2c9d8906aa7a6d427d9f41df8303ffe88b234bab82c9cb983f2f64: exec format error
I tested by removing the comments from boostrap.sh and rebuilding it and then the image starts working ok again.
The text was updated successfully, but these errors were encountered:
phemmer commented Feb 9, 2015
This is expected. When running an executable, the kernel looks at the first few bytes to determine the type of the file. For scripts this means the first line needs to be a shebang. The shebang tells the kernel how to execute the script (that it needs to use an interpreter, and which interpreter to use).
lresende commented Feb 10, 2015
Is this an error that is coming from Docker ? Could we at least have a better user error message where it make things easier to debug/solve the problem ?
aleksey-korolev commented Oct 22, 2015
+1 for better error message
Di3g0 commented Jan 17, 2016
+1 for better error message
thaJeztah commented Jan 17, 2016
This is an error message that’s produced by the kernel, so if you want a better error message, please report at https://lkml.org
jasetom commented Mar 3, 2016
Had the same issue, fixed it by adding #!/bin/sh at the top of the file instead of having other comments
orian commented Apr 3, 2016
It may mean that the binary was build for system not compatible with docker base image system.
GlenKPeterson commented Apr 25, 2016
@orian you mean like running a 64-bit image on a 32-bit host OS? I suspect that’s why I just got this message.
orian commented Apr 26, 2016 •
@GlenKPeterson yes, exactly. It happen to me to compile the Go binary on Mac and try to run it on dockerize Ubuntu. The error isn’t very helpful in such case.
hefekranz commented Aug 29, 2016
#!/bin/sh in my entrypoint fixed it for me
pcgeek86 commented Sep 16, 2016
I encountered this error with Docker Compose. In order to fix it, I needed to:
- Add #!/bin/sh to the main.sh script, defined as the ENTRYPOINT in the Dockerfile
- Force rebuild of containers: docker-compose up -d —build —force-recreate
Oomi commented Dec 6, 2016 •
I am facing the same issue with docker. How do I open this file Bootstrap.sh to edit. I am unable to find it. I have found Bootstrap.jar in Home/app/idea/lib
badal1443 commented Apr 12, 2017
I am very new to Docker community, I started experimenting with docker on 1 of my Ubuntu 14.04 machine with i686 architecture, I see following error.
«FATA[0000] Error response from daemon: Cannot start container 5db84c34e065162caadcd4bbcff67ff964ab30b6a7224d30a412c3a2228103ad: [8] System error: exec format error»
I googled and found that Docker doesn’t work with Linux other than 64bit. Looks like I am getting system error:exec format error because of it, can somebody comment on it?
thaJeztah commented Apr 12, 2017
Correct; requirements are a 64-bit installation
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
exec user process caused «exec format error» when run container with CMD on RHEL #475
Comments
gouyang commented Feb 13, 2018
Download below two files to a directory and build an image from it.
on RHEL 7.4, it throws an error as below. No this error on Fedora 27.
The text was updated successfully, but these errors were encountered:
TomSweeneyRedHat commented Feb 13, 2018
@gouyang Thanks for the issue report, we’ll take a look at it.
rhatdan commented Feb 27, 2018
@gouyang Could you try to build buildah from master and see if you get this issue. I just built buildah-0.15 for RHEL, but it will take a few weeks to get released.
gouyang commented Feb 28, 2018 •
The issue is still existing by building buildah from master.
rhatdan commented Feb 28, 2018
THis could be a runc version error.
runc version
gouyang commented Mar 1, 2018
It’s the same result with runc build from master.
TomSweeneyRedHat commented Mar 2, 2018
I finally had some time to play and wasn’t able to duplicate this. I tried both Buildah 0.12 and Buildah 0.15 and everything worked for me. Our runc versions are different, I just used what ever was installed with RHEL rather than updating that.
I then upgraded runc to the latest version and had the same result:
If possible, could you retest on a new VM with RHEL @gouyang ?
gouyang commented Mar 3, 2018
It’s not reproduced on a new VM RHEL guest. It’s strange it ‘s always reproduced on one of my RHEL system no matter reboot the system or reinstall buildah+runc on it.
gouyang commented Mar 3, 2018
It seems the problem of the hello file, built a binary locally works fine.
TomSweeneyRedHat commented Mar 3, 2018
@gouyang thanks for the follow up. That’s strange that the binary was problematic on just that one machine. If you run into that again, please reopen or open a new issue.
momocow commented Apr 17, 2018 •
@gouyang Make sure if there is a shebang in hello .
Though I’m not familiar with go, I happen to find here since I met with the same problem ( standard_init_linux.go:190: exec user process caused «exec format error» ).
I think it is because the system does not know how to execute the file.
FYI: What’s the appropriate Go shebang line?
Also be aware of the difference between the shell form and exec form of CMD in Dockerfile.
khalidumarr commented Jun 17, 2018
just adding #!/bin/bash to my entry point file fixed the issue.
pixdrift commented Jun 17, 2018
@khalidumarr, which version of buildah are you using? Did you execute with buildah run and you received this error?
khalidumarr commented Jun 17, 2018
i was using docker run directly.
ealexhaywood commented Jul 16, 2018
Why should there be a shebang in hello ? It’s a compiled binary
TrayserCassa commented Jul 23, 2018
We build with an wrong architecture.
CGO_ENABLED=0
GOOS=linux
GOARCH=amd64
and then:
go build -o bin/serviceXYZ_linux_amd64
Our Image is for godeployment and we get this error. Maybe it will help somebody..
rhatdan commented Jul 23, 2018
TrayserCassa commented Sep 4, 2018
@rhatdan
Sorry for the late answering.
Like in the title in this issue: ‘exec format error’
rhatdan commented Sep 4, 2018
There is probably a good change the runc version is out of date.
rpm -q runc
adambant commented Sep 14, 2018
just adding #!/bin/bash to my entry point file fixed the issue.
Turns out the #!/bin/bash was in my entry point file, but since I did a copy and paste into that file, the first line was a newline, not the #!/bin/bash, effectively ignoring it. If this helps anyone as well. Deleted the empty line and all worked fine.
TomSweeneyRedHat commented Sep 15, 2018
@adambant TYVM for the follow up and info on your work around.
Kiran01bm commented Sep 18, 2018 •
@gouyang Make sure if there is a shebang in hello .
Though I’m not familiar with go, I happen to find here since I met with the same problem ( standard_init_linux.go:190: exec user process caused «exec format error» ).
I think it is because the system does not know how to execute the file.
FYI: What’s the appropriate Go shebang line?
Also be aware of the difference between the shell form and exec form of CMD in Dockerfile.
FWIW — I had the same error (copied below) with a ruby container and the problem was due to a missing shebang in my ruby program. I was using CMD instruction in a exec form (CMD instruction copied below)