I’m seeing a CEF-related crash with CasparCG 2.5 on Ubuntu 24.04 and wanted to check whether this is a known issue.
CasparCG version:
2.5.0 3cac160 Dev
The crash report shows that it is not the main CasparCG process, but this CEF utility subprocess:
/usr/bin/casparcg-server-beta --type=utility --utility-sub-type=unzip.mojom.Unzipper
The process terminates with SIGABRT and:
*** stack smashing detected ***: terminated
The relevant part of the stack trace is:
CefExecuteProcess()
__stack_chk_fail()
__fortify_fail("stack smashing detected")
At the time of the crash, Chromium had downloaded a component into component_crx_cache. The component ID was:
hfnkpimlhhgieaddgfemjhofmfblmnib
This appears to be Chromium’s CRLSet component, so it looks like the crash happens when CEF’s component updater starts the Unzipper utility process.
The main CasparCG process continues running, the AMCP connection remains available, and all playout channels continue responding. Therefore, it seems isolated to the CEF utility subprocess, although Ubuntu still reports it as a CasparCG crash because the subprocess uses the CasparCG executable.
I found a very similar report involving JetBrains’ CEF implementation on Linux. It has the same unzip.mojom.Unzipper process and almost the same CefExecuteProcess → __stack_chk_fail stack trace, so this may not be CasparCG-specific.
Chromium’s source also mentions that changing the stack canary after fork() requires all relevant functions on the return path to be built without stack protection. Otherwise, it can cause this exact type of failure. Chromium provides:
--change-stack-guard-on-fork=disable
as a workaround.
I tried starting CasparCG with --disable-component-update, but the flag does not appear in the CEF child process command lines, so it looks like those extra Chromium flags are not being propagated to CEF.
A few questions:
-
Have you seen this with the CEF 142 integration in CasparCG 2.5?
-
Is there currently an intended way to pass Chromium command-line switches to all CEF subprocesses?
-
Would adding
--change-stack-guard-on-fork=disablethrough CEF’s command-line handling be a reasonable workaround? -
Would it make sense for CasparCG to disable Chromium component updates by default, given that it is normally used as an embedded playout renderer?