표준 라이브러리 설정() 오용 14곳+ 일괄 수정 → 회귀 스위트 hang 복구
개요
2026-07-09 ISA729 울트라 감사(작동성 렌즈, /Users/ef/CrownyOS/docs/isa729-감사-20260709/적대_작동성.md)가 발견한 최고 레버리지 결함을 수정: 표준 이미지 라이브러리 다수가 설정(arr, i, v)(op415 ARRAY_SET — 무조건 덮어쓰기+배열핸들 반환)을 읽기 함수처럼 오용(설정(arr, 0, 0)으로 너비/높이/픽셀을 "읽으려" 시도)해, 실제로는 데이터를 파괴하고 힙주소를 반환값으로 받아 너비*높이 같은 계산이 억 단위로 폭증 → tests/run_all.sh가 수 분간 hang.
무엇을 했는지
- 정밀 판정 로직 수립:
설정(ARR,IDX,VAL)호출을 4가지로 분류(VAL≠0=실쓰기 / bare-statement=실쓰기 /ARR=설정(ARR,...)자기참조=실쓰기 / 그 외=읽기오용) — 한선씨로 판정함수 재현·검증(설정오용판정(), 크라우니코드 학습DB설정오용판정_읽기패턴탐지등록). - 전수 재검색:
libs/*.한선~10,081개 파일 전체 스캔(원 감사 목록 14개에 국한하지 않음).
기록.한선(이미지 실행취소/히스토리 라이브러리)에서 신규 misuse 발견 — 이미지 딥카피 함수가 원본을 파괴하며 복사하던 심각한 버그.
- 최종 수정 11개 파일, 338개 호출부: CVF(68) RGBA(26) 그라디언트(8) 기록(14) 도구(19) 레이어(22) 변환(18) 브러시(10) 색공간(60) 선택(46) 필터(47). 각 파일 수정 전
.bak-설정수정백업. - 검증: 11개 전부 개별 컴파일 성공. 필터.한선 밝기조절() 스모크(2×2 이미지)로 너비/높이/픽셀값 정확성 확인.
perl -e 'alarm 600; exec @ARGV' bash tests/run_all.sh— 완주(35.33초), 99 통과/8 실패(107개 중). 이전 hang 원인이던 벤치마크.한선·이미지통합테스트.한선 모두 통과 전환. 잔여 8실패는 본 패치 대상 라이브러리를 사용하지 않는 무관 이슈(삼진트랜스포머스택 컴파일실패, .sh 5종)로 별도 이관. - pkg 동기화 확인:
pkg/libs/의 동일 11개 파일이 이미 수정 후 형태와 바이트단위 100% 동일 — 별도 동기화 불필요(이미 일치, fix 정확성의 독립 교차검증). 한선코드젠.한선(RPN 방언 자체호스팅 코드젠, 표준문법 아님)은 회귀에 미포함·자동판정 위험 커서 수정 보류(수동검토 권고로 문서화).
관련 파일
- 수정:
/Users/ef/CrownyOS/crownyc/libs/{CVF,RGBA,그라디언트,기록,도구,레이어,변환,브러시,색공간,선택,필터}.한선 - 백업: 위 각 파일의
.bak-설정수정사본 - 판정로직:
/private/tmp/.../scratchpad/rule_analysis/fix_seolj.py(분석용, 반복사용 시 재작성 가능), 한선씨 재현본은 크라우니코드 학습DB설정오용판정_읽기패턴탐지로 등록 - 패치검증 상세:
/Users/ef/CrownyOS/docs/isa729-감사-20260709/패치검증_표준lib.md - 원 감사:
/Users/ef/CrownyOS/docs/isa729-감사-20260709/적대_작동성.md,최종판정.md
잔여 이슈
한선코드젠.한선2건(트릿 24/26 초기화) — 수동검토 대기.- run_all.sh 잔여 8실패(본 작업과 무관): 삼진트랜스포머스택.한선 컴파일 실패, ab_vm.sh/golden_harness.sh/run.sh/WASM.sh/크라우니국_전체.sh/회귀실행.sh — 별도 티켓/세션 필요.