커뮤니티

dmp 파일 문의드립니다.

프로필 이미지
dbals
2026-08-10 20:50:09
155
글번호 233205
답변완료

[문의] 나스닥/SP500/골드 분·틱 6개 스크립트 동시 실행 시 약 30분 경과 지점 다운 - 크래시 덤프 분석 결과 첨부


■ 증상

ReqChartEx 요청 → 응답 → RemoveObject 지연삭제 → 다음 타임프레임 요청, 이 루프를

분봉(1~110분) / 틱봉(30~1000틱) 전체 타임프레임에 대해 페이싱 0~1000ms로 끝없이 순환.

나스닥(NQU26), SP500(ESU26), Gold(GCZ26) 종목마다 분/틱 파일로 나눠 총 6개 파일을 동시

실행하면 약 30분 경과 시점에 프로그램이 다운됩니다.


■ 크래시 덤프(.dmp) 분석 결과 (직접 파싱해서 확인한 사실)

- 예외 코드: 0xC0000005 (ACCESS_VIOLATION)

- 접근 종류: 읽기(read) 시도, 대상 주소 = 0x0 (널 포인터)

- 크래시 발생 위치: SystemTrading.dll 모듈 내부, 오프셋 0x3D65D

- 크래시 순간 레지스터: EAX=0, EBX=0, ECX=0, EDX=0

(ECX는 x86 MSVC에서 보통 this 포인터를 담는 레지스터라, 이미 유효하지 않은 객체에

대해 멤버함수를 호출하려다 발생한 크래시로 보입니다.)

- 크래시 지점 직전 스택(리턴주소 후보): YesChartLibrary.dll, YesSystemChart.dll

(둘 다 차트 관련 DLL로, 차트 객체 처리 도중 SystemTrading.dll로 진입해 크래시)


■ 저희 쪽에서 자체 점검한 내용

- ReqChartEx 응답을 받은 뒤 RemoveObject로 삭제하는 구조에서, 삭제 타이머와 다음 요청

타이머가 동시에 도는 구간이 있어 이론상 삭제 전에 객체가 재할당될 수 있는 구조적

문제를 발견하여 큐(대기열) 방식으로 수정, 삭제 성공/실패 여부와 누적 생성-삭제

카운트를 로그로 추적하도록 진단 스크립트를 개선해 재현 테스트 중입니다.

- 다운 직전 로그에서 특정 응답이 7초 이상 지연되는 현상(SLOW_RESPONSE)도 함께

확인되어, 응답 지연과 크래시 사이의 연관 가능성도 의심하고 있습니다.


■ 문의드리고 싶은 부분

1. SystemTrading.dll+0x3D65D 부근에서 차트 객체(ChartEx)를 참조하는 코드 중,

객체가 삭제되었거나 유효하지 않을 때 널 체크 없이 접근하는 구간이 있는지

내부적으로 확인 가능하신지요.

2. 다중 종목(6개 파일)에서 ReqChartEx를 짧은 주기로 반복 호출할 때, 엔진 내부에

차트 객체 핸들 개수 제한이나 동시 요청 제한이 있는지, 있다면 권장 상한값을

안내해주실 수 있는지요.

3. RemoveObject 호출 시 이벤트 핸들러(OnRcvChartEx) 내부가 아닌 별도 타이머에서

지연 삭제하는 저희 방식 자체가 엔진 설계상 안전한지, 혹은 권장되는 다른

삭제 시점/방식이 있는지 안내 부탁드립니다.


첨부: eBestYesTraderRun_26_08_10_20_30_11.dmp

답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-08-20 16:08:04

안녕하세요 예스스탁입니다. 1 내부적으로 널 체크 항상 하고 사용하게 되어 있습니다. 널체크 없이 접근하는 구간은 없습니다.
다만 덤프확인결과 널 확인후 접근하는데 그사이에 널이 되는 경우가 있습니다. 2 별도로 내부적인 제한은 없습니다. 객체 사용은 이전에 답변드린 부분과 같이 전체 객체 사용수만 1000개로 제한되어 있습니다. 3 예 별도 타이머를 주시고 삭제하는 방식이 맞습니다. 다만 이전 답변과 같이 삭제-> 생성사이에 조금더 큰 여유시간을 주시고 생성과 삭제가 겹치지 않게 하셔야 할 것 같습니다. 즐거운 하루되세요