Skip to content

libkiwi >= 0.23 이 kiwi-rs 바인딩 init 에서 SEGFAULT + 포크 auto-download 버그(find_asset_url) #145

Description

@hang-in

@
PR #143(analyze-path KiwiAnalyzeOption ABI 수정) 후속으로 FFI 회귀 테스트(#144)를 추가하다 발견한 두 가지 잔여 문제를 트래킹합니다.

1. libkiwi >= 0.23 → Kiwi::new() init 에서 SEGFAULT

증상

정품 libkiwi 0.23.2 로 seCall 의 KiwiTokenizer::new() 호출 시 Kiwi::new()(kiwi builder/init 경로)에서 하드 크래시(STATUS_ACCESS_VIOLATION / SIGSEGV). analyze 가 아니라 init 단계.

근거

  • 같은 lib+model 로 번들 kiwi-cli-0.23.2 는 정상 분석(아버지/NNG 가/JKS 방/NNG ...) → lib/model 무결, 바인딩 문제.
  • probe(eprintln before/after new())로 crash 지점을 init 으로 확정.
  • 시그니처 대조상 seCall 이 쓰는 builder 경로(kiwi_builder_init 4-arg, kiwi_builder_build 3-arg, kiwi_builder_add_word 4-arg)는 0.23.2 capi.h 와 일치. 그럼에도 크래시 → 모델 로딩/빌드옵션 레벨의 0.23 비호환 추정(상류 조사 필요).
  • 참고: 포크의 kiwi_init 은 3-arg 로 선언되어 있으나 0.23.2 는 4-arg. seCall 은 이 경로 미사용이지만 별개 결함.

영향 / 현재 완화

다음

2. 포크 auto-download 버그 — find_asset_url

yeonsh/kiwi-rs @668a7c0 의 bootstrap.rs::find_asset_url 은 릴리스 JSON 에서 asset 이름 뒤 } 까지를 asset 객체로 잘라 browser_download_url 을 찾는데, GitHub API 의 asset 객체는 namebrowser_download_url 사이에 중첩된 "uploader": { ... } 를 포함 → 잘린 조각이 URL 을 안 가짐 → "release asset not found". 포크 유닛테스트는 uploader 없는 평탄한 mock 만 써서 못 잡음.

영향

libkiwi 미설치 상태의 모든 fresh 설치자에게 런타임 auto-download 실패(latest/명시 태그 무관). cargo install --git 사용자 포함.

완화


관련: #143, #144
@

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions