[error/Jenkins] error=0, Failed to exec spawn helper 젠킨스 빌드 실패 에러

dani·2025년 8월 13일

Jenkins

목록 보기
1/1

💡당시 상황

젠킨스에서 백엔드 프로젝트도, 프론트 프로젝트도 같은 에러가 나면서 빌드가 실패했다. 빌드로 개발중인 서버에 배포가 되어야 진행이 되는데, 여기서 문제가 발생하면서 모든 것이 막히게 된 상황이었다.

Jenkins에 대해 수정한 것은 전혀 없는 상황이었다. 단지 평소 하던대로 개발한 내용을 푸쉬하고 Jenkins에서 빌드 버튼을 눌러 빌드 명령어를 실행하였는데, 갑자기 이런 문제가 터진 것이었다.


🔍문제 원인

문제의 핵심

error=0, Failed to exec spawn helper

문제의 핵심은 위의 메세지였다. Jenkins가 git 프로세스를 실행하려다 OS 차원에서 fork/exec 단게에서 실패한 것이다.

왜 갑자기 이럴까?

아무것도 안 건드렸어도 아래 상황 중 하나면 이런 에러가 뜰 수 있다고 한다.

1. 시스템 리소스 부족

프로세스 실행에 필요한 메모리/스레드 부족
리눅스에서 fork() 실패 시 이런 메시지가 나옵니다.

원인:

  • 메모리 부족
  • 너무 많은 프로세스가 실행 중
  • ulimit로 프로세스 개수 제한됨

2. git 실행 파일 손상 or 권한 문제

  • /usr/bin/git이 깨졌거나, 실행권한이 사라짐
  • 패키지 업데이트 도중 오류 발생 가능

3. PATH 문제

  • Jenkins가 실행되는 환경의 PATH에서 git 경로가 사라짐
  • 시스템에선 잘 되지만 Jenkins 서비스 환경에서는 실행 불가

4. 파일 핸들 제한

  • /var/lib/jenkins/caches/ 또는 임시 디렉토리(/tmp)에서 파일 생성이 안 되는 상태
  • 디스크 풀(full) / inode 부족도 fork 실패의 원인

제일 흔한 원인

1. 리눅스 서버에서 메모리 부족 + 프로세스 제한 때문에 fork 실패

2. Jenkins를 오래 켜놔서 쌓인 빌드 프로세스나 플러그인 프로세스가 자원 다 사용함


### 에러 코드
java.io.IOException: error=0, Failed to exec spawn helper: pid: 887899, exit value: 1
	at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
Caused: java.io.IOException: Cannot run program "git" (in directory "/var/lib/jenkins/caches/git-d09a7cd79cb123ea724a4331f9f6f532"): error=0, Failed to exec spawn helper: pid: 887899, exit value: 1
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
	at hudson.Proc$LocalProc.<init>(Proc.java:252)
	at hudson.Proc$LocalProc.<init>(Proc.java:221)
	at hudson.Launcher$LocalLauncher.launch(Launcher.java:995)
	at hudson.Launcher$ProcStarter.start(Launcher.java:507)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2839)
Caused: hudson.plugins.git.GitException: Error performing git command: git init /var/lib/jenkins/caches/git-d09a7cd79cb123ea724a4331f9f6f532
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2862)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2771)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2766)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:2059)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl$5.execute(CliGitAPIImpl.java:1083)
Caused: hudson.plugins.git.GitException: Could not init /var/lib/jenkins/caches/git-d09a7cd79cb123ea724a4331f9f6f532
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl$5.execute(CliGitAPIImpl.java:1085)
	at PluginClassLoader for git-client//org.jenkinsci.plugins.gitclient.CliGitAPIImpl.init(CliGitAPIImpl.java:365)
	at PluginClassLoader for git-client//hudson.plugins.git.GitAPI.init(GitAPI.java:246)
	at PluginClassLoader for git//jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:390)
Caused: java.io.IOException
	at PluginClassLoader for git//jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:413)
	at PluginClassLoader for scm-api//jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:219)
	at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:120)
	at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:72)
	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:316)
	at hudson.model.ResourceController.execute(ResourceController.java:101)
	at hudson.model.Executor.run(Executor.java:446)
Finished: FAILURE

✔️해결하기

응급 조치

sudo systemctl restart jenkins

리소스가 비워져서 일시적으로 복구될 가능성 높음
근본 해결 위해선 ulimit 조정, 메모리 확보, git 경로/권한 점검 필요


현재는 급한 불을 꺼야해서 응급 조치를 해두었고,
추후 이 오류가 다시 나지 않도록 Jenkins 서버 자원 관리에 대해서도 다뤄볼 예정이다!
profile
개발세포 이야기

0개의 댓글