Bug Description
Final Cut Pro 11.0 (build 430149) silently terminates (no crash dialog, no .crash file in DiagnosticReports) when the MCP server calls generate_captions() after set_caption_words() with ~110+ Chinese word-timed entries. The process appears to be SIGKILLed by the system (jetsam / memory pressure), as no exception handler fires.
The first call to generate_captions() in a session succeeds. The crash typically occurs after FCP is restarted and generate_captions() is called in a second session where persisted caption data gets restored, suggesting state accumulation across sessions.
Environment
- macOS: 26.5.1 (arm64)
- Hardware: Mac mini M4, 16GB RAM
- FCP Version: 11.0 (build 430149) — lifetime/perpetual license
- SpliceKit Version: 3.3.8
- Installation: DMG → patched copy at ~/Applications/SpliceKit/Final Cut Pro.app
- MCP Server: Python venv running
/Applications/SpliceKit.app/Contents/Resources/mcp/server.py
Steps to Reproduce
- Launch SpliceKit-patched FCP 11.0
- Import a ~57s MP4 with Chinese voice-over
- Delete leading silence (~12s), leaving ~43s of content on timeline
- Call
set_caption_words() with 113 Chinese words with precise word-level timestamps (from Whisper turbo model)
- Call
generate_captions(style="clean_minimal", animation="fade", max_words=3, word_highlight=True)
- FCP silently terminates — no crash dialog, just disappears
Also reproduced with style="bold_pop", so it does not appear style-specific.
Logs
From ~/Library/Logs/SpliceKit/splicekit.log (~7500 lines in affected session):
1. FCP 11.0 compatibility issue at startup:
[00:06:57.545] [SpliceKit] [Favorites] Exception injecting favorites folder:
-[FFBKEffectLibraryFolder isSubcategoryAll]: unrecognized selector sent to instance 0xbbbbcde90
This repeats 4× — isSubcategoryAll selector is missing from FFBKEffectLibraryFolder on FCP 11.0.
2. Caption generation writes back 113 titles word-by-word:
[00:07:12.599] [Captions][RuntimeTitle] Live effect template summary: runs=2 [0]{看看 下 } ...
[00:07:12.599] [Captions][RuntimeTitle] Applying attributed text summary: runs=2 ...
[00:07:12.599] [Captions][RuntimeTitle] FFMotionEffect setText:forField: text="看看 下 午" ...
These attributed-string operations repeat for every word in all 113 titles, totalling ~6800 log lines. Each title gets 3 write cycles (full → word-level → word-highlight pivot).
3. No crash handler report — Sentry crash handler is enabled at startup but termination is too abrupt to capture a report.
Suspected Cause
I suspect this is one of:
- Jetsam / memory pressure — FCP 11.0 on 16GB M4 gets SIGKILLed by macOS when 113 Motion title clips with attributed strings and word-highlight channels consume too much memory.
- FFBKEffectLibraryFolder compatibility — the startup exception (
isSubcategoryAll unrecognized selector) may indicate broader FCP 11.0 API differences that manifest later during caption rendering.
- Caption persistence state leak — the crash happens on the second launch after captions are persisted and restored, not the first.
Expected Behavior
- Caption generation should complete without crashing FCP 11.0, especially for 100+ word Chinese content
- If FCP 11.0 lacks the API surface needed,
generate_captions() should at minimum return a clear error instead of crashing
Suggestion
Would it be possible to offer a lightweight caption mode for FCP 11.0 users that uses native FCP captions (FFAnchoredCaption / caption lane) instead of Motion title clips? The generate_native_captions() approach would likely avoid the Motion title rendering overhead entirely.
Bug Description
Final Cut Pro 11.0 (build 430149) silently terminates (no crash dialog, no .crash file in DiagnosticReports) when the MCP server calls
generate_captions()afterset_caption_words()with ~110+ Chinese word-timed entries. The process appears to be SIGKILLed by the system (jetsam / memory pressure), as no exception handler fires.The first call to
generate_captions()in a session succeeds. The crash typically occurs after FCP is restarted andgenerate_captions()is called in a second session where persisted caption data gets restored, suggesting state accumulation across sessions.Environment
/Applications/SpliceKit.app/Contents/Resources/mcp/server.pySteps to Reproduce
set_caption_words()with 113 Chinese words with precise word-level timestamps (from Whisper turbo model)generate_captions(style="clean_minimal", animation="fade", max_words=3, word_highlight=True)Also reproduced with
style="bold_pop", so it does not appear style-specific.Logs
From
~/Library/Logs/SpliceKit/splicekit.log(~7500 lines in affected session):1. FCP 11.0 compatibility issue at startup:
This repeats 4× —
isSubcategoryAllselector is missing fromFFBKEffectLibraryFolderon FCP 11.0.2. Caption generation writes back 113 titles word-by-word:
These attributed-string operations repeat for every word in all 113 titles, totalling ~6800 log lines. Each title gets 3 write cycles (full → word-level → word-highlight pivot).
3. No crash handler report — Sentry crash handler is enabled at startup but termination is too abrupt to capture a report.
Suspected Cause
I suspect this is one of:
isSubcategoryAllunrecognized selector) may indicate broader FCP 11.0 API differences that manifest later during caption rendering.Expected Behavior
generate_captions()should at minimum return a clear error instead of crashingSuggestion
Would it be possible to offer a lightweight caption mode for FCP 11.0 users that uses native FCP captions (FFAnchoredCaption / caption lane) instead of Motion title clips? The
generate_native_captions()approach would likely avoid the Motion title rendering overhead entirely.