[google/syzkaller] 2ca8f1: pkg/clangtool: fix C++ static constructor intercep...

0 views
Skip to first unread message

Aleksandr Nogikh

unread,
Jul 16, 2026, 5:05:33 AM (5 days ago) Jul 16
to syzk...@googlegroups.com
Branch: refs/heads/gh-readonly-queue/master/pr-7616-4c0cb454b9e5edc7cb4400168657bd48c84b7fe4
Home: https://github.com/google/syzkaller
Commit: 2ca8f17aae14a058d89e920e30fa7b577a32c11e
https://github.com/google/syzkaller/commit/2ca8f17aae14a058d89e920e30fa7b577a32c11e
Author: Aleksandr Nogikh <nog...@google.com>
Date: 2026-07-16 (Thu, 16 Jul 2026)

Changed paths:
M pkg/aflow/tool/codesearcher/codesearcher.go
M pkg/clangtool/clangtool.go
A pkg/clangtool/cmain.go
M tools/clang/codesearch/codesearch.cpp
A tools/clang/codesearch/plugin.go
M tools/clang/declextract/declextract.cpp
A tools/clang/declextract/plugin.go
M tools/syz-declextract/declextract.go
M tools/syz-declextract/declextract_test.go

Log Message:
-----------
pkg/clangtool: fix C++ static constructor interception race

Intercepting tool execution via C++ static constructors causes the clang
tools (e.g., codesearch) to run before the Go runtime is fully initialized.
This early execution leads to unpredictable initialization races when
interacting with complex libraries like LLVM.

Fix this by moving execution into an auto-intercepting Go registry.
Tools now register themselves via `clangtool.Register` in a CGO `init()`
function, which immediately executes the tool via `extern "C"` if
requested. This guarantees the Go runtime has booted safely.

If a requested tool is not compiled in, `runTool` will now return an
error before attempting to spawn the subprocess.



To unsubscribe from these emails, change your notification settings at https://github.com/google/syzkaller/settings/notifications

Aleksandr Nogikh

unread,
Jul 16, 2026, 5:17:38 AM (5 days ago) Jul 16
to syzk...@googlegroups.com
Branch: refs/heads/master
Reply all
Reply to author
Forward
0 new messages