Repository navigation
Fixed
- Rare crash of the Quick Look extension in
libvlc_event_send(EXC_BAD_ACCESS), seen with 0.1.5 and 0.1.8 (Pitfall #25). Cause: a VLCKit 3.7.2 bug (its libvlc patch 0024, asynchronous stop). When a player is released while a play waits behind an asynchronous stop, VLCKit starts that playback during the release and then frees the player; the new playback sends its events into the freed player. The player now always sends a last stop just before it is released, which cancels the waiting play. A test program crashed within 20 rounds without this stop (3 of 3 runs) and ran 200 rounds without a crash with it (2 of 2 runs). - Release automation: the DMG step failed on GitHub on the first 0.1.12 run ("No space left on device"; a re-run worked). Without
-size,hdiutilestimates the image size, and the estimate was too small for VLCKit.scripts/build-release-dmg.shnow passes the folder's apparent size plus 20% and 20 MB.
Tests
- New smoke test: release a player right after stop and play, 40 times. Without the fix it crashed the test process in
libvlc_event_send. - Checked by hand: Quick Look in Finder (maintainer, 2026-10-11: quick switching, pause and play, closing during playback),
qlmanage -pwith the extension's log, no new crash reports; 3 × 40 stress cycles without a hang; the DMG script locally (a too-small-sizegives the exact GitHub error; the new size gives a valid DMG).
Known Issues
- The crash was rare in normal use (2 reports), so the fix is proven by the reproduction and the test, not yet by long use. The same is true for the freeze fix of 0.1.12.
- The release workflow builds with Xcode 16.2 (Swift 6.0); local development uses Xcode 27. The new
StopBeforeReleasecode is first compiled with Swift 6.0 by the release run. - All other Known Issues of 0.1.12 remain.
Third-Party Software
MKVQuickLook's own source code is licensed under the MIT License (see LICENSE).
The app also contains the following third-party software. It keeps its own license.
VLCKit 3.7.2 (with libVLC, VLC 3.0.23)
- Copyright: VideoLAN and the VLC and VLCKit authors
- License: GNU Lesser General Public License, version 2.1 or later (LGPL-2.1-or-later)
- License text in the app:
MKVQuickLook.app/Contents/Resources/VLCKit-COPYING.txt - Location in the app:
MKVQuickLook.app/Contents/Frameworks/VLCKit.framework. MKVQuickLook uses it unmodified, as a separate dynamic framework. The Quick Look extension loads it from there. - Binary used: the official VideoLAN package
https://download.videolan.org/cocoapods/prod/VLCKit-3.7.2-3e42ae47-79128878.tar.xz
(SHA-25645fc6398c80d1f8dc0e384a9c80704848e9e82a3a382611bf531fa83c198c276)
Corresponding source code
- VLCKit, tag
3.7.2(commit3e42ae4786d74be5a7387e01824733cbd4b294c3):
https://code.videolan.org/videolan/VLCKit/-/tree/3.7.2
(mirror: https://github.com/videolan/vlckit/tree/3.7.2) - VLC (libVLC), branch
3.0.x, commit79128878ddb2c280bbb6c89c76a46b31a80ade1c:
https://code.videolan.org/videolan/vlc/-/tree/79128878ddb2c280bbb6c89c76a46b31a80ade1c
(mirror: https://github.com/videolan/vlc/tree/79128878ddb2c280bbb6c89c76a46b31a80ade1c)
VLCKit's build applies the patches inlibvlc/patchesof the VLCKit tag above to this commit. - The libraries that VLC builds into VLCKit (for example FFmpeg, built here under LGPL-2.1-or-later) are defined, with their versions and checksums, in
contrib/srcof that VLC source.
Replacing VLCKit
You may replace MKVQuickLook.app/Contents/Frameworks/VLCKit.framework with a modified, interface-compatible build. Then re-sign the framework and the app, for example:
codesign --force --sign - MKVQuickLook.app/Contents/Frameworks/VLCKit.framework
codesign --force --sign - MKVQuickLook.app