SAM3 set_image() — uncorrectable GPU ECC memory error
RCA: MaskWork::maskPanos CUDA ECC Error
Overview#
What Happened#
2026-06-05 01:08 KST에 cupixworks-pano-postprocessor-instance 서비스에서 SAM3 face/body detection inference 수행 중 GPU 하드웨어 메모리 오류(uncorrectable ECC error)가 발생하여 해당 인스턴스의 pano 처리 작업이 실패했다. 단일 발생이며 다른 인스턴스는 정상 동작을 지속했다.
Quick Facts#
| Field | Value |
|---|---|
| exception.class | RuntimeError |
| exception.message | CUDA error: uncorrectable ECC error encountered |
| top_frame | /tmp/lib/face-body-detector/sam3/model/sam3_image_processor.py:55 |
| runtime | Python 3.11, PyTorch 2.6.0, CUDA 12.8.1 |
| env | production, us-west-2 |
Timeline#
- 2026-06-05 01:06:24 KST — PanoPostprocessorService 인스턴스 초기화 (session:
893ea23004d7) - 2026-06-05 01:06:28 KST — pano 다운로드 완료 (1895ms)
- 2026-06-05 01:07:38 KST — resize 작업에서 504 Gateway Time-out 다수 발생 (GPU 부하 징후)
- 2026-06-05 01:08:15 KST — infer_panos 단계 완료 기록 (elapsed: 160857ms)
- 2026-06-05 01:08:16 KST — CUDA uncorrectable ECC error 발생, MaskWork 프로세스 exit code 1
- 2026-06-05 01:08:18 KST — PanoPostprocessorService::run 실패 (end - false)
- 2026-06-05 01:08:19 KST — terminateService 강제 종료
- 2026-06-05 01:12:14 KST — 새 인스턴스 초기화, CUDA 정상 동작 재개
Error Log#
MaskWork::maskPanos | script ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: CUDA error: uncorrectable ECC error encountered
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
Impact#
- Service:
cupixworks-pano-postprocessor-instance - Team: tisseur
- 발생 횟수: 1
- 최초 발생: 2026-06-05 01:08 KST
- 최근 발생: 2026-06-05 01:08 KST
단일 인스턴스에서 처리 중이던 하나의 capture batch가 실패했다. 다른 인스턴스들은 동시에 정상 처리를 계속했으며, 약 4분 후 새 인스턴스가 정상적으로 초기화되어 CUDA 작업이 재개되었다. 사용자 영향은 해당 capture의 pano 처리 지연으로 제한적이다.
Root Cause Summary#
GPU 하드웨어의 uncorrectable ECC (Error Correcting Code) 메모리 오류로 인해 CUDA 연산이 실패했다. 이는 소프트웨어 버그가 아닌 물리적 GPU 메모리 셀의 일시적 또는 영구적 손상으로 발생하는 하드웨어 장애다. SAM3 모델의 set_image() 메서드에서 이미지 텐서를 GPU 메모리로 전송(.to(self.device))하는 시점에 ECC로 복구 불가능한 메모리 비트 에러가 감지되어 CUDA runtime이 즉시 에러를 발생시켰다. 7일간 단 1회 발생으로, 우주선(cosmic ray)이나 메모리 셀 노화에 의한 일시적 하드웨어 오류일 가능성이 높다.
Technical Analysis#
Code Path#
- Entry point:
applications/agents/packages/cupix-pano-postprocessor/src/app.ts - Service orchestrator:
applications/agents/packages/cupix-pano-postprocessor/src/pano-postprocessor-service.ts - Mask invocation:
applications/agents/packages/cupix-pano-postprocessor/src/work/mask-work.ts:21-51
maskPanos(inputDir: string, outputDir: string, optionPath: string): Promise<boolean> {
return new Promise((resolve, reject) => {
const process: ChildProcessWithoutNullStreams = spawn('stdbuf', ['-oL', 'bash', BlurScriptPath], {
cwd: path.dirname(BlurScriptPath),
stdio: 'pipe',
env: { INPUT_DIRPATH: inputDir, OUTPUT_DIRPATH: outputDir, OPTION_FILE_PATH: optionPath }
});
process.on('close', (code) => {
if (code === 0) {
logger.debug('MaskWork::maskPanos | success code:%d', code);
resolve(true);
} else {
logger.error('MaskWork::maskPanos | error code:%d', code);
reject(false);
}
});
});
}
- GPU script entry:
/tmp/lib/face-body-detector/cupix_inference.py:453→detect()at line 381 - SAM3 inference:
/tmp/lib/face-body-detector/cupix_inference.py:219→run_sam3_inference() - Failure point:
/tmp/lib/face-body-detector/sam3/model/sam3_image_processor.py:55
image = v2.functional.to_image(image).to(self.device)
# ↑ 이미지 텐서를 GPU로 전송하는 시점에 ECC error 발생
기대 동작: 이미지 텐서가 GPU 메모리에 정상적으로 할당되어 SAM3 모델 inference가 수행됨.
실제 동작: GPU 메모리의 uncorrectable ECC error가 감지되어 CUDA runtime이 RuntimeError를 발생시키고, Python 프로세스가 exit code 1로 종료됨.
Log Evidence#
사용한 Datadog 쿼리:
service:cupixworks-pano-postprocessor-instance status:error @environment:production "uncorrectable ECC"
service:cupixworks-pano-postprocessor-instance "maskPanos"
핵심 로그 시퀀스 (16:08:16-18Z UTC):
2026-06-04T16:08:16.998Z | error | MaskWork::maskPanos | script Traceback (most recent call last):
File "/tmp/lib/face-body-detector/cupix_inference.py", line 453, in <module>
2026-06-04T16:08:16.998Z | error | File "/tmp/lib/face-body-detector/cupix_inference.py", line 381, in detect
sam3_results = run_sam3_inference(sam3_processor, img_derotated_np, sam3_prompts)
File "/tmp/lib/face-body-detector/cupix_inference.py", line 219, in run_sam3_inference
state = processor.set_image(image)
File "/tmp/lib/face-body-detector/sam3/model/sam3_image_processor.py", line 55, in set_image
image = v2.functional.to_image(image).to(self.device)
2026-06-04T16:08:16.999Z | error | RuntimeError: CUDA error: uncorrectable ECC error encountered
2026-06-04T16:08:17.757Z | error | MaskWork::maskPanos | error code:1
2026-06-04T16:08:18.051Z | error | PanoPostprocessorService::run | end - false
에러 발생 직전 504 Gateway Time-out 로그 (부하 징후):
2026-06-04T16:07:38.866Z | error | resize pano id:9060685 | 504 Gateway Time-out
2026-06-04T16:07:38.991Z | error | resize pano id:9060720 | 504 Gateway Time-out
2026-06-04T16:07:40.144Z | error | resize pano id:9060666 | 504 Gateway Time-out
회복 확인:
2026-06-04T16:12:14.175Z | PanoPostprocessorService::init (새 인스턴스 정상 초기화)
2026-06-04T16:12:31.480Z | MaskWork::maskPanos 정상 실행 재개
7일간 동일 에러 검색 결과: 1건만 발생 (이 건이 유일).
Hypotheses Considered#
| # | Hypothesis | Evidence for | Evidence against | Verdict |
|---|---|---|---|---|
| H1 | GPU 하드웨어 ECC 메모리 오류 (일시적 하드웨어 장애) | 에러 메시지가 명확히 "uncorrectable ECC error"를 지시; 7일간 1회만 발생; 4분 후 새 인스턴스에서 CUDA 정상 동작 재개 | — | Confirmed |
| H2 | CUDA OOM (메모리 부족)으로 인한 에러 | 직전에 다수 504 timeout 발생으로 시스템 부하 징후 존재 | 에러 메시지가 OOM이 아닌 ECC error를 명시; OOM은 "out of memory" 메시지를 생성함 | Rejected |
| H3 | 소프트웨어 버그 (잘못된 텐서 연산) | CUDA kernel errors는 비동기적으로 보고될 수 있음 | ECC error는 하드웨어 레벨 메모리 오류로 소프트웨어와 무관; 동일 코드가 다른 인스턴스에서 정상 동작 | Rejected |
| H4 | GPU 과열로 인한 메모리 불안정 | 장시간 GPU 연산(infer_panos 160초 소요) + 높은 부하 상태 | 과열은 보통 throttling이나 thermal shutdown 로그를 남기며 ECC error와 직접 연관 없음 | Inconclusive |
Fix Recommendation#
즉시 조치 (Critical)#
- 조치 불필요: 이는 하드웨어 장애로, 소프트웨어 수정 대상이 아니다. 단일 발생이며 서비스가 자동 회복했다.
단기 개선 (1주 이내)#
mask-work.ts에서 GPU 프로세스 실패 시 재시도 로직 추가 고려. 현재는 exit code 1이면 즉시 실패로 처리하지만, ECC error 같은 일시적 하드웨어 오류는 재시도로 복구 가능할 수 있다.reject(false)대신 stderr 출력을 포함한 Error 객체로 reject하여 상위에서 에러 유형을 구분할 수 있게 개선.
장기 개선 (재발 방지)#
- GPU 인스턴스의 ECC error 카운터를 모니터링하여 특정 GPU에서 반복적으로 ECC error가 발생하면 해당 인스턴스를 자동 교체하는 인프라 레벨 대응.
- NVIDIA
nvidia-smi의 ECC error count를 주기적으로 수집하여 Datadog metric으로 전송하면 GPU 건강 상태를 사전 감지 가능.
Monitoring#
- GPU ECC error 발생 추적:
service:cupixworks-pano-postprocessor-instance "uncorrectable ECC"
- GPU 프로세스 실패 추적:
service:cupixworks-pano-postprocessor-instance "MaskWork::maskPanos | error code"
- 인스턴스 레벨 nvidia-smi ECC counter metric 추가 권장:
avg:gpu.ecc_errors.uncorrectable{service:cupixworks-pano-postprocessor-instance} by {host}
Risk Assessment#
- Risk level: low
- 예상 복잡도: trivial
- 근거: 하드웨어 일시 장애로 7일간 1회 발생. 서비스 자동 회복됨. 사용자 영향 최소 (단일 capture 처리 지연).