linux: Fix stack-related sub-process shutdown crashes (fixes #3912)

On Linux systems the stack frame reference canary will be purposely
changed when forking sub-processes (see https://crbug.com/40181003).
To avoid sub-process shutdown crashes the NO_STACK_PROTECTOR
annotation must be added to all functions in the call stack leading to
CefExecuteProcess(). Applications that cannot add this annotation must
instead pass the `--change-stack-guard-on-fork=disable` command-line
flag.
This commit is contained in:
Marshall Greenblatt
2025-03-31 14:03:57 -04:00
parent b2f5ab6cd2
commit 5b18ca7d3f
10 changed files with 41 additions and 6 deletions

View File

@ -9,10 +9,13 @@ import functools
def make_cpptoc_impl_proto(name, func, parts):
proto = ''
if func.has_attrib('no_stack_protector'):
proto += 'NO_STACK_PROTECTOR '
if isinstance(func, obj_function_virtual):
proto = parts['retval'] + ' CEF_CALLBACK'
proto += parts['retval'] + ' CEF_CALLBACK'
else:
proto = 'CEF_EXPORT ' + parts['retval']
proto += 'CEF_EXPORT ' + parts['retval']
proto += ' ' + name + '(' + ', '.join(parts['args']) + ')'
return proto