커뮤니티
종료시 덤프파일을 AI로 분석시킨 것입니다. (AWS윈도서버/32비트)
[기술 문의] 예스트레이더 반복 비정상 종료(3일간 4회) — SKCommCM.dll(SignKorea 인증서 모듈)이 인증서 파싱 중 Access Violation
1. 발생 개요
- 2026-09-14 ~ 09-16 사이 4회 종료. 매번 SysFiles\user\dmp\ 에 덤프 생성됨 (4개 모두 첨부).
┌──────────────────────┬──────────────────────┬─────────┬──────────────────────┬──────────────────┐
│ 덤프 파일 │ 프로세스 시작(KST) │ 가동시간 │ 종료 위치 │ 폴트 주소(읽기) │
├──────────────────────┼──────────────────────┼─────────┼──────────────────────┼──────────────────┤
│ ...26.09.14.09.54.12 │ 09-14 08:55:21 │ 1.0시간 │ SKCommCM.dll+0x495bb │ 0x00004153 │
│ ...26.09.14.17.35.07 │ 09-14 10:18:13 │ 7.3시간 │ SKCommCM.dll+0x495bb │ 0x01010705 │
│ ...26.09.15.05.45.41 │ 09-14 19:02:59 │ 10.7시간│ SKCommCM.dll+0x3879c │ 0xfbc1ffac │
│ ...26.09.16.13.24.31 │ 09-16 08:21:55 │ 5.0시간 │ SKCommCM.dll+0x495bb │ 0x02020705 │
└──────────────────────┴──────────────────────┴─────────┴──────────────────────┴──────────────────┘
- 예외 코드: 4건 모두 0xC0000005 EXCEPTION_ACCESS_VIOLATION (읽기)
- 실행 환경: AWS EC2 인스턴스, Windows Server(빌드 26100, 8 vCPU, RAM 64GB), 32비트 예스트레이더(WOW64)
- 예스트레이더 버전: YesTraderRun.exe 2026-09-12 빌드 (4건 동일). SystemTrading.dll은 09-14 첫 재시작 때 자동 업데이트(09-10 빌드 → 09-14 빌드)되었으나 종료는 계속 발생 → 해당 업데이트와 무관
- SignKorea 모듈: SKCommCM.dll 9.9.8.9 (2023-03-08), SKComdIF.dll 10.0.4.1 (2023-03-08), SKCommEM/SC.dll (2023-03), SKCommIC.dll (2021-11), SKComdCM/EM/SC.dll (2020-11) — 4건 모두 동일 버전
- 이용 증권사: [기재]
- 종료 직전 상황: [기재 — 예: 자동매매 주문 발생 시 인증서 관련 창이 뜨는 시점]
2. 덤프 분석 결과 (미니덤프 파서 + rust minidump-stackwalk, 두 결과 일치)
- 4건 모두 메인 UI 스레드에서, 동일한 호출 경로로 종료됨:
주문 관련 창(OrderManager.dll) → 모달 대화상자 → YesTraderRun.exe+0x7440d → 대화상자(YesToolkitPro/Controls20)
→ YesTraderRun.exe+0x736d6 → YesTraderRun.exe+0x727ce → SKComdIF.dll+0x4c3d3 → SKCommCM.dll+0xd9f4(인증서 정보 추출)
→ SKCommCM.dll+0x3c30b → (확장 필드 파싱) → 크래시
- 대표 호출 스택 (09-16 13:24 건):
00 SKCommCM.dll+0x495bb ← 크래시 (mov al,[eax+ecx], eax=0x02020705, ecx=0)
01 SKCommCM.dll+0x518ef
02 SKCommCM.dll+0x4aa4d
03 SKCommCM.dll+0x4a69f
04 SKCommCM.dll+0x48eaf
05 SKCommCM.dll+0x4297f
06 SKCommCM.dll+0x3a23f
07 SKCommCM.dll+0x3beae
08 SKCommCM.dll+0x3c30b
09 SKCommCM.dll+0xd9f4 (인증서 정보 추출 API 내부)
10 SKComdIF.dll+0x4c3d3 (인자: 인증서 DER 포인터, 길이 1426, 출력 구조체)
11 YesTraderRun.exe+0x727ce
12 YesTraderRun.exe+0x736d6
13 mfc100.dll+0x23f596
14 YesToolkitPro.dll+0xd0578
15 mfc100.dll+0x23f27a
16 YesTraderRun.exe+0xd3fdb
17~38 mfc100/user32 메시지 디스패치, Controls20.dll, YesToolkitPro.dll (대화상자)
39 OrderManager.dll+0x36bd6
40 OrderManager.dll+0x38f74 (09-14 09:54, 09-15 05:45 건은 +0x3a325 → +0x3a9bb 경로)
41~52 mfc100/user32 (모달 메시지 루프)
53 YesTraderRun.exe+0x7440d
... 메인 메시지 루프 → 시작 루틴 → kernel32!BaseThreadInitThunk → ntdll!RtlUserThreadStart
- 09-15 05:45 건만 크래시 지점이 다름:
00 SKCommCM.dll+0x3879c ← OID 비교 루프 (mov dl,[ecx+eax]; cmp dl,[esi+eax]), 비교 대상 상수 = 1.3.6.1.5.5.7.48.1(id-ad-ocsp), ecx=0xfbc1ffac(비정상 포인터)
01 SKCommCM.dll+0x3996f
02 SKCommCM.dll+0x3bf2e
03 SKCommCM.dll+0x3c30b
04 SKCommCM.dll+0xd9f4
05 SKComdIF.dll+0x4c3d3
06 YesTraderRun.exe+0x727ce ... (이하 동일)
- 크래시 시점 상세:
· 인증서 파싱 루틴이 출력 구조체에 Version, Serial, 서명알고리즘(sha256WithRSAEncryption), 발급자/주체 DN, RSA 2048 키 정보, 유효기간, 공개키, keyUsage, 정책 OID(1.2.410.200004.5.1.1.10), AKI/SKI, SubjectPublicKeyInfo까지 정상 기록(09-15 건은 LDAP CRL 배포점까지 기록)한 뒤, 확장 필드(certificatePolicies의 UserNotice, authorityInfoAccess 부근)를 처리하는 단계에서 종료됨.
· 4건 모두 파서 내부 상태(스트림 객체의 버퍼 포인터, OID 포인터)에 인증서 DER 데이터 조각이 덮어써진 뒤 그 값을 포인터로 역참조함.
- 0x02020705 = "05 07 02 02" (OID 1.3.6.1.5.5.7.2.2 id-qt-unotice 끝부분)
- 0x01010705 = "05 07 01 01" (OID 1.3.6.1.5.5.7.1.1 authorityInfoAccess 끝부분)
- 0x00004153 = "53 41 00 00" (AKI 발급자명 "KISA" 문자열 끝부분)
즉 파싱 중 고정 크기 버퍼가 인증서 내용으로 넘쳐 파서 자신의 상태를 덮어쓰는 형태로 보이며, 덮어쓰인 위치에 따라 크래시 지점만 달라짐.
· 파서에 전달된 인증서 길이(1,426바이트)는 DER 헤더(30 82 05 8E)와 일치 → 인증서 파일 절단은 아님.
- 파싱 대상 인증서 (4건 동일): 코스콤 SignKorea 발급 증권거래용 법인 공동인증서
· 발급자: cn=SignKorea CA4, ou=AccreditedCA, o=SignKorea, c=KR
· 유효기간: 2026-09-12 06:52:06 ~ 2027-09-16 23:59:59 (첫 종료 2일 전 신규 발급)
· 서명알고리즘 sha256WithRSAEncryption, RSA 2048, 정책 OID 1.2.410.200004.5.1.1.10
- 배제된 원인:
· 메모리 부족 아님: 4건 모두 VirtualSize 약 1GB / PrivateUsage 약 500MB (4GB 주소공간), 시스템 RAM 64GB
· 스택 오버플로 아님, 통신 스레드·시스템트레이딩 전략 코드와 무관 (크래시 스레드는 메인 UI 스레드)
· 예스트레이더 본체 업데이트(09-12, 09-14 빌드)와 무관 — 종료 모듈은 2023년 빌드 SignKorea DLL로 4건 동일
3. 추정 원인
2023-03 빌드의 SignKorea 모듈(SKCommCM.dll 9.9.8.9 등)이 2026-09-12 신규 발급된 SignKorea CA4 인증서의 확장 필드를 파싱하는 과정에서 내부 버퍼가 손상되어 종료되는 것으로 추정됨. 주문 관련 처리 중 인증서 창이 열릴 때마다 재현되어 자동매매가 하루 1~2회 중단되고 있음. [갱신 전 인증서로는 동일 조작에서 문제가 없었음 / 확인 필요 — 해당되는 쪽으로 기재]
4. 요청 사항
- SignKorea 모듈(SKCommCM.dll 등) 최신 버전 존재 여부 및 패치 배포 계획
- SignKorea CA4 발급 인증서와의 호환성 확인
- 패치 전까지 적용 가능한 임시 회피 방법 안내 (주문 시 인증서 창을 거치지 않는 설정, 64비트 버전이 동일 모듈을 쓰는지 등)
5. 첨부
- YesTraderRun.26.09.14.09.54.12.dmp
- YesTraderRun.26.09.14.17.35.07.dmp
- YesTraderRun.26.09.15.05.45.41.dmp
- YesTraderRun.26.09.16.13.24.31.dmp
답변 3
한걸음씩
2026-09-16 14:55:05
한걸음씩
2026-09-16 15:06:46
예스스탁 예스스탁 답변
2026-09-16 15:11:24