Skip to content

Commit 24b4b19

Browse files
DanMeonclaude
andcommitted
ci: 후보 B fix 효과 검증 — CoreText auto-activation 비활성화 patch
CTFontManagerSetAutoActivationSetting(null, 1) 호출을 SkiaLayerRenderer::new() 진입 직후에 삽입하는 patch 를 ci/patches/ 에 추가. macOS 잡에서 maturin develop --release 직전에 git apply 로 working tree 에만 반영 (external/rhwp 자체 commit 없음). PNG hang 이 사라지면 후보 B 확정, 그대로면 후보 A 또는 다른 방향 탐색 필요. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 170ef41 commit 24b4b19

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ jobs:
170170
with:
171171
python-version: "3.12"
172172
- run: uv sync --no-install-project --group all
173+
# * 실험 patch: macOS 만 SkiaLayerRenderer::new() 진입에 CoreText auto-activation 비활성화. external/rhwp 자체에는 commit 하지 않고 runtime 에만 apply.
174+
- name: Apply experimental CoreText fix (macOS only)
175+
if: runner.os == 'macOS'
176+
run: |
177+
cd external/rhwp
178+
git apply ../../ci/patches/macos-coretext-fix.patch
179+
echo "=== patch applied ==="
180+
git diff --stat
173181
- run: uv run maturin develop --release
174182
# * macOS PNG 렌더 hang — 3차 진단으로 CoreText downloadable-font IPC hang 확인 (TDownloadableFontManager::Download → FontRegistryUI). chain 첫 폰트 부재 시 macOS 가 다운로드 시도 → daemon 응답 없음 → 무한 IPC wait.
175183
# mitigation: 상류 fallback chain 의 모든 한글 폰트 사전 설치로 다운로드 lookup 자체를 막음.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
diff --git a/src/renderer/skia/renderer.rs b/src/renderer/skia/renderer.rs
2+
index eea1f807..33407294 100644
3+
--- a/src/renderer/skia/renderer.rs
4+
+++ b/src/renderer/skia/renderer.rs
5+
@@ -26,6 +26,19 @@ pub struct SkiaLayerRenderer {
6+
7+
impl SkiaLayerRenderer {
8+
pub fn new() -> Self {
9+
+ // [diagnostic patch from rhwp-python ci/patches/macos-coretext-fix.patch]
10+
+ // macOS 의 CoreText downloadable-font lookup IPC (fontd mach port) 무한 대기 회피 시도.
11+
+ #[cfg(target_os = "macos")]
12+
+ unsafe {
13+
+ extern "C" {
14+
+ fn CTFontManagerSetAutoActivationSetting(
15+
+ bundle_id: *const core::ffi::c_void,
16+
+ setting: u32,
17+
+ );
18+
+ }
19+
+ // kCTFontManagerAutoActivationDisabled = 1
20+
+ CTFontManagerSetAutoActivationSetting(core::ptr::null(), 1);
21+
+ }
22+
Self {
23+
font_mgr: FontMgr::default(),
24+
custom_typefaces: HashMap::new(),

0 commit comments

Comments
 (0)