← 목록
기타 2026-07-12 4KB 읽기 4분

도구레지스트리.한선 — 파일스캔 버퍼바이트스캔 전환 (문자열풀 90% 함정 제거)

개요

/Users/ef/crowny-word/연결/도구레지스트리.한선파일스캔()읽기()로 도구/*.한선 전문을 문자열 적재 후 줄분할()글자(내용,i)를 전체 바이트수만큼 호출 — 호출 1회당 1글자 문자열핸들 생성 구조라, 65도메인 합계 ~127만 바이트 스캔 시 문자열풀(48만 캡)이 90%(432000/480000)까지 찼다(실측 경고 발생). 버퍼 기반 바이트 스캔으로 재작성해 제거.

무엇을 했는지

  1. 파일스캔()버퍼파일읽기(BUF_FILE_READ, opcode874) + 버퍼바이트읽기(BUF_GETBYTE,
opcode851) 바이트 스캔으로 전환. 개행(10)만 찾아 줄 경계를 세되, 줄 시작 7바이트를 "함수 " UTF-8 프리픽스([237,149,168,236,136,152,32])와 바이트 비교해 매치한 줄만 버퍼잘라+버퍼문자열로 소형 문자열 1개 생성(비매치 줄은 문자열 생성 0). 조각버퍼는 즉시 버퍼해제(슬롯 128캡 회피).
  1. 잔여 함정 확인: 파일스캔만 고쳐도 도메인함수수/도메인카운트맵/레지스트리요약
여전히 읽기()+줄분할()+분할()로 (작아진) PSV 레지스트리 파일을 문자별 누적concat 방식으로 3회 재스캔해 문자열풀 90% 경고가 재현됨 → 공용 헬퍼 줄분할()/분할() 자체를 문자열버퍼()+버퍼바이트읽기 방식으로 재작성(줄/필드 경계당 1문자열만 생성, 문자별 누적 현재=현재+c 패턴 제거).
  1. 함정 발견: 코드값(c)는 1인자 전용 특수구문(내부적으로 인덱스 0을 자동 첨부) —
코드값(구분, 0)처럼 2인자로 호출하면 파싱 에러() 기대, ',' 발견). 1인자 코드값(구분)로 수정.
  1. 함정 발견 #2: 확인(문자열리터럴, 중첩함수호출, 기대값) 형태에서 중첩호출 체인이
깊어지면(버퍼바이트스캔처럼 다단 함수콜) "이름" 문자열 인자가 손상되어 PASS: 0으로 출력됨(수치 판정 자체는 정확, 라벨만 오염). 해당 시험 5건을 "결과를 임시변수에 먼저 담고 확인()엔 변수만 넘기는" 기존 파일 관례로 리팩터해 해결(누산+함수 인라인 금지 패턴과 동일 계열의 새로운 사례 — 가드레일에 추가 검토 필요).
  1. 실측 발견: 재스캔 결과가 기존 PSV(1635행)와 달리 1639행(+4)으로 나옴. 원인 추적
결과 구버전이 실제로 존재하는 함수 4개(렌더명령생성.한선의 파이프이스케이프/ 파이프언이스케이프, 편집연산.한선의 레코드이스케이프/레코드역이스케이프)를 누락시켰던 것으로 확인(구현 결함 소산으로 추정, grep으로 소스 실존 확인). 신버전이 더 정확하므로 테스트 기준선을 1639로 갱신.

검증

  • 컴파일: hanseonc_high 성공, 경고 없음.
  • 실행: crownyc run 23/23 PASS (기존 20건 유지 + 1635행 동일성 목적의 신규 assert 1건
→ 1639행 확정 assert로 정정 + 관련 보강 assert들).
  • 문자열 핸들 경고: 수정 전 90%(432000/480000) 경고 실측 → 수정 후 동일 실행에서 경고
0회(전체 출력에 [STR] 라인 없음, exit=0). 반복 실행 2회 모두 재현.
  • 하위 연동 회귀: /Users/ef/crowny-word/연결/워드셀통합.한선(도구레지스트리.psv를
임계값 기반으로 읽는 연결완전성검사 포함) 22/22 PASS 유지 확인.
  • PSV 산출물: /Users/ef/crowny-word/데이터/도구레지스트리.psv 1639행·65도메인(유니크).

관련 파일

  • /Users/ef/crowny-word/연결/도구레지스트리.한선 (수정본)
  • /Users/ef/crowny-word/데이터/도구레지스트리.psv (재생성됨, 1639행)
  • /Users/ef/crowny-word/연결/워드셀통합.한선 (회귀 검증만, 미수정)
  • 학습DB: 파일스캔_버퍼바이트스캔 intent 등록

잔여 이슈

  • "확인(literal, 중첩함수호출, 기대)" 패턴에서 중첩호출이 깊을 때 literal 인자가 손상되는
VM 함정은 이번 세션에서 국소 회피(임시변수 분리)만 했고 근본 원인(프레임/스택 처리)은 미조사 — 재발 시 hanseonc_high.c의 지역변수 프레임 오프셋(frame_offset, add_var) 경로 조사 필요. 가드레일 템플릿에 신규 함정으로 추가 검토 권장.