Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chore: support apple m1 backtraces #354

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ajbt200128 wants to merge 1 commit into bombela:master
base: master
Choose a base branch
Loading
from ajbt200128:austin/arm-macos

Conversation

@ajbt200128
Copy link
Contributor

@ajbt200128 ajbt200128 commented Aug 12, 2025

Hey! back again with some more support. This works for me on m1 macs. got the info from here: https://github.com/llvm/llvm-project/blob/368c02e3ec44e5418626f46abebcc22a69c7f66d/libunwind/src/Registers.hpp and /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk/usr/include/mach/arm/_structs.h

Copy link
Contributor Author

should close #326 if I understand this issue correctly

semgrep-ci bot pushed a commit to semgrep/semgrep that referenced this pull request Aug 20, 2025
This PR adds beautiful segfaults ❤️ . Whenever we segfault in OCaml code, we should now be provided with some backtraces, including function name, file # and potentially code snippets:
<details>
<summary>Backtrace</summary>
```
 ____
 /> フ
 | _ _ |
 /` ミ_x ノ
 / |
 / ヽ ノ
 | | | |
/ ̄ | | |
| ( ̄ヽ_ヽ)_)_)
\二つ
Segfault cat says:
process 5514 received signal:
> "Segmentation fault"
faulting address: 0x01
Stack trace (most recent call last):
#14 Object "", at 0xffffffffffffffff, in 
#13 Source "src/env/__libc_start_main.c", line 95, in libc_start_main_stage2 [0x2f61b77]
#12 Source "runtime/main.c", line 37, in main [0x41f94f]
#11 | Source "runtime/startup_nat.c", line 146, in caml_startup
 | Source "runtime/startup_nat.c", line 139, in caml_startup_exn
 Source "runtime/startup_nat.c", line 134, in caml_main [0x2f5a16f]
#10 | Source "runtime/startup_nat.c", line 86, in caml_startup_common
 Source "runtime/startup_nat.c", line 127, in caml_startup_common [0x2f5a0d7]
#9 Object "/src/semgrep-pro/_build/default/OSS/src/main/Main.exe", at 0x2f5a69f, in caml_start_program
#8 Object "/src/semgrep-pro/_build/default/OSS/src/main/Main.exe", at 0x467227, in caml_program
#7 Source "OSS/src/main/Main.ml", line 91, in camlDune__exe__Main.entry [0x4798a7]
 88: * core' and './dune' install section. We use the argv[0] trick below to decide
 89: * whether the user wants the semgrep-core or osemgrep behavior. *)
 90: let () =
 > 91: Cap.main (fun (caps : Cap.all_caps) ->
 92: let argv = CapSys.argv caps#argv in
 93: let argv0 =
 94: (* remove the possible ".exe" extension for Windows and ".bc" *)
#6 Source "OSS/libs/commons/UCommon.ml", line 42, in camlUCommon.exn_to_real_unixexit_351 [0x22ce38b]
 40: (* now in prelude: exception UnixExit of int *)
 41: let exn_to_real_unixexit f =
 > 42: try f () with
 43: (* If it is a normal exit just info log it *)
 44: | UnixExit (0, msg) ->
 45: (* nosemgrep: no-logs-in-library *)
#5 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x22c28af]
 50: *)
 51: let protect ~finally work =
 52: (* nosemgrep: no-fun-protect *)
 > 53: try Fun.protect ~finally work with
 54: | Fun.Finally_raised exn1 as exn ->
 55: (* Just re-raise whatever exception was raised during a 'finally',
 56: * drop 'Finally_raised'.
#4 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x271037b]
#3 Source "OSS/libs/commons/UCommon.ml", line 63, in camlUCommon.pp_do_in_zero_box_432 [0x22ce643]
 61: let pp_do_in_zero_box f =
 62: Format.open_box 0;
 > 63: f ();
 64: Format.close_box ()
 65: 
 66: (* nosemgrep: no-ref-declarations-at-top-scope *)
#2 Source "OSS/libs/commons/UCommon.ml", line 124, in camlUCommon.fun_1206 [0x22ceb43]
 121: finalize
 122: (fun () ->
 123: pp_do_in_zero_box (fun () ->
 > 124: try f () with
 125: (* <---- here it is *)
 126: | Unix.Unix_error (e, fm, argm) ->
 127: pr2
#1 Source "OSS/src/core_cli/Core_CLI.ml", line 663, in camlCore_CLI.decide_if_eio_6164 [0x621ae7]
 660: (*****************************************************************************)
 661: 
 662: let run caps (config : Core_scan_config.t) : unit =
 > 663: let res = Core_scan.scan caps config in
 664: output_core_results
 665: (caps :> < Cap.stdout ; Cap.stderr ; Cap.exit >)
 666: res config
#0 Source "OSS/src/core_scan/Core_scan.ml", line 1047, in camlCore_scan.scan_5956 [0x927a74]
 1044: Common.with_time (fun () -> applicable_rules_of_config config)
 1045: in
 1046: let a : unit -> unit = Obj.magic 0 in
 >1047: a ();
 1048: let res : Core_result.t = scan_exn caps config timed_rules in
 1049: Ok
 1050: (res
Segmentation fault
```
</details>
We also get backtraces on these signals:
```
 SIGABRT, // Abort signal from abort(3)
 SIGBUS, // Bus error (bad memory access)
 SIGFPE, // Floating point exception
 SIGILL, // Illegal Instruction
 SIGIOT, // IOT trap. A synonym for SIGABRT
 SIGQUIT, // Quit from keyboard
 SIGSEGV, // Invalid memory reference
 SIGSYS, // Bad argument to routine (SVr4)
 SIGTRAP, // Trace/breakpoint trap
 SIGXCPU, // CPU time limit exceeded (4.2BSD)
 SIGXFSZ, // File size limit exceeded (4.2BSD)
#if defined(BACKWARD_SYSTEM_DARWIN)
 SIGEMT, // emulation instruction executed
```
and I have taken the liberty of adding SIGUSR1 a la https://github.com/surma/stacksignal.
## How
This PR wraps https://github.com/bombela/backward-cpp with a few modifications to get things working on linux in docker on m1 macs, and m1 macs themselves:
bombela/backward-cpp#354
bombela/backward-cpp#347
This library works by walking the stack after a segfault, and then reading dwarf symbols to get the info.
Dependencies:
This PR adds a few more libraries, backward cpp (mit), and then libunwind, libdw (elfutils), and libdwarf which are all lgplv2. I tried to ensure that they will be statically linked/bundled where necessary, so we should be all good.
Test plan:
Manually introduced an ocaml segfault (see above example).
Then ran this on one occurring in pcre:
<details>
<summary>Backtrace</summary>
```
> "Segmentation fault: 11"
Stack trace (most recent call last):
#10 Object "Main.exe", at 0x103150c2b, in camlCore_scan.scan_5956 + 123
#9 Object "Main.exe", at 0x1053e6883, in caml_start_program + 131
#8 Object "Main.exe", at 0x1029a1db3, in caml_program + 56027
#7 Object "Main.exe", at 0x1029b5627, in camlDune__exe__Main.entry + 111
#6 Object "Main.exe", at 0x104bedf4b, in camlUCommon.exn_to_real_unixexit_351 + 51
#5 Object "Main.exe", at 0x104be221f, in camlCommon.protect_307 + 39
#4 Object "Main.exe", at 0x10501fddb, in camlStdlib__Fun.protect_326 + 107
#3 Object "Main.exe", at 0x104bee203, in camlUCommon.pp_do_in_zero_box_432 + 51
#2 Object "Main.exe", at 0x104bee703, in camlUCommon.fun_1206 + 51
#1 Object "Main.exe", at 0x1029eab17, in camlPro_core_CLI.run_898 + 1687
#0 Object "Main.exe", at 0x103150c3c, in camlCore_scan.scan_5956 + 140
```
</details>
and a marshalling segfault out in the wild:
<details>
<summary>Backtrace</summary>
```
Stack trace (most recent call last):
#31 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#30 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#29 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#28 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#27 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#26 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#25 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#24 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#23 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#22 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#21 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#20 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#19 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#18 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#17 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#16 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#15 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#14 Source "src/pro_scan/Pro_scan.ml", line 606, in camlPro_scan.scan_exn_4292 [0x60bdb7]
#13 Source "src/core/opentelemetry.ml", line 1312, in camlOpentelemetry.with__2580 [0x23b2f52]
#12 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#11 Source "OSS/src/core_scan/Core_scan.ml", line 738, in camlCore_scan.fun_7477 [0xbe214b]
#10 Source "OSS/src/core_scan/Core_scan.ml", line 628, in camlCore_scan.parmap_map_5319 [0xbe4c67]
#9 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#8 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#7 Source "OSS/libs/parallelism/Parmap_.ml", line 169, in camlParmap_.parmap_479 [0x238ccbe]
#6 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#5 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#4 Source "src/parmap.ml", line 401, in camlParmap.mapper_1352 [0x2390ca3]
#3 Source "src/parmap.ml", line 115, in camlParmap.unmarshal_860 [0x238f495]
#2 Object "/usr/lib/python3.12/site-packages/semgrep/bin/semgrep-core-proprietary", at 0x30a695a, in caml_c_call
#1 Source "runtime/intern.c", line 993, in caml_input_value_from_block [0x308b6fb]
#0 Source "runtime/intern.c", line 762, in caml_parse_header [0x308a109]
```
</details>
synced from Pro a5dc2cd7fd0d8736642572760d2ff6a05adbed4e
yosefAlsuhaibani pushed a commit to semgrep/semgrep that referenced this pull request Aug 20, 2025
This PR adds beautiful segfaults ❤️ . Whenever we segfault in OCaml code, we should now be provided with some backtraces, including function name, file # and potentially code snippets:
<details>
<summary>Backtrace</summary>
```
 ____
 /> フ
 | _ _ |
 /` ミ_x ノ
 / |
 / ヽ ノ
 | | | |
/ ̄ | | |
| ( ̄ヽ_ヽ)_)_)
\二つ
Segfault cat says:
process 5514 received signal:
> "Segmentation fault"
faulting address: 0x01
Stack trace (most recent call last):
#14 Object "", at 0xffffffffffffffff, in 
#13 Source "src/env/__libc_start_main.c", line 95, in libc_start_main_stage2 [0x2f61b77]
#12 Source "runtime/main.c", line 37, in main [0x41f94f]
#11 | Source "runtime/startup_nat.c", line 146, in caml_startup
 | Source "runtime/startup_nat.c", line 139, in caml_startup_exn
 Source "runtime/startup_nat.c", line 134, in caml_main [0x2f5a16f]
#10 | Source "runtime/startup_nat.c", line 86, in caml_startup_common
 Source "runtime/startup_nat.c", line 127, in caml_startup_common [0x2f5a0d7]
#9 Object "/src/semgrep-pro/_build/default/OSS/src/main/Main.exe", at 0x2f5a69f, in caml_start_program
#8 Object "/src/semgrep-pro/_build/default/OSS/src/main/Main.exe", at 0x467227, in caml_program
#7 Source "OSS/src/main/Main.ml", line 91, in camlDune__exe__Main.entry [0x4798a7]
 88: * core' and './dune' install section. We use the argv[0] trick below to decide
 89: * whether the user wants the semgrep-core or osemgrep behavior. *)
 90: let () =
 > 91: Cap.main (fun (caps : Cap.all_caps) ->
 92: let argv = CapSys.argv caps#argv in
 93: let argv0 =
 94: (* remove the possible ".exe" extension for Windows and ".bc" *)
#6 Source "OSS/libs/commons/UCommon.ml", line 42, in camlUCommon.exn_to_real_unixexit_351 [0x22ce38b]
 40: (* now in prelude: exception UnixExit of int *)
 41: let exn_to_real_unixexit f =
 > 42: try f () with
 43: (* If it is a normal exit just info log it *)
 44: | UnixExit (0, msg) ->
 45: (* nosemgrep: no-logs-in-library *)
#5 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x22c28af]
 50: *)
 51: let protect ~finally work =
 52: (* nosemgrep: no-fun-protect *)
 > 53: try Fun.protect ~finally work with
 54: | Fun.Finally_raised exn1 as exn ->
 55: (* Just re-raise whatever exception was raised during a 'finally',
 56: * drop 'Finally_raised'.
#4 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x271037b]
#3 Source "OSS/libs/commons/UCommon.ml", line 63, in camlUCommon.pp_do_in_zero_box_432 [0x22ce643]
 61: let pp_do_in_zero_box f =
 62: Format.open_box 0;
 > 63: f ();
 64: Format.close_box ()
 65: 
 66: (* nosemgrep: no-ref-declarations-at-top-scope *)
#2 Source "OSS/libs/commons/UCommon.ml", line 124, in camlUCommon.fun_1206 [0x22ceb43]
 121: finalize
 122: (fun () ->
 123: pp_do_in_zero_box (fun () ->
 > 124: try f () with
 125: (* <---- here it is *)
 126: | Unix.Unix_error (e, fm, argm) ->
 127: pr2
#1 Source "OSS/src/core_cli/Core_CLI.ml", line 663, in camlCore_CLI.decide_if_eio_6164 [0x621ae7]
 660: (*****************************************************************************)
 661: 
 662: let run caps (config : Core_scan_config.t) : unit =
 > 663: let res = Core_scan.scan caps config in
 664: output_core_results
 665: (caps :> < Cap.stdout ; Cap.stderr ; Cap.exit >)
 666: res config
#0 Source "OSS/src/core_scan/Core_scan.ml", line 1047, in camlCore_scan.scan_5956 [0x927a74]
 1044: Common.with_time (fun () -> applicable_rules_of_config config)
 1045: in
 1046: let a : unit -> unit = Obj.magic 0 in
 >1047: a ();
 1048: let res : Core_result.t = scan_exn caps config timed_rules in
 1049: Ok
 1050: (res
Segmentation fault
```
</details>
We also get backtraces on these signals:
```
 SIGABRT, // Abort signal from abort(3)
 SIGBUS, // Bus error (bad memory access)
 SIGFPE, // Floating point exception
 SIGILL, // Illegal Instruction
 SIGIOT, // IOT trap. A synonym for SIGABRT
 SIGQUIT, // Quit from keyboard
 SIGSEGV, // Invalid memory reference
 SIGSYS, // Bad argument to routine (SVr4)
 SIGTRAP, // Trace/breakpoint trap
 SIGXCPU, // CPU time limit exceeded (4.2BSD)
 SIGXFSZ, // File size limit exceeded (4.2BSD)
#if defined(BACKWARD_SYSTEM_DARWIN)
 SIGEMT, // emulation instruction executed
```
and I have taken the liberty of adding SIGUSR1 a la https://github.com/surma/stacksignal.
## How
This PR wraps https://github.com/bombela/backward-cpp with a few modifications to get things working on linux in docker on m1 macs, and m1 macs themselves:
bombela/backward-cpp#354
bombela/backward-cpp#347
This library works by walking the stack after a segfault, and then reading dwarf symbols to get the info.
Dependencies:
This PR adds a few more libraries, backward cpp (mit), and then libunwind, libdw (elfutils), and libdwarf which are all lgplv2. I tried to ensure that they will be statically linked/bundled where necessary, so we should be all good.
Test plan:
Manually introduced an ocaml segfault (see above example).
Then ran this on one occurring in pcre:
<details>
<summary>Backtrace</summary>
```
> "Segmentation fault: 11"
Stack trace (most recent call last):
#10 Object "Main.exe", at 0x103150c2b, in camlCore_scan.scan_5956 + 123
#9 Object "Main.exe", at 0x1053e6883, in caml_start_program + 131
#8 Object "Main.exe", at 0x1029a1db3, in caml_program + 56027
#7 Object "Main.exe", at 0x1029b5627, in camlDune__exe__Main.entry + 111
#6 Object "Main.exe", at 0x104bedf4b, in camlUCommon.exn_to_real_unixexit_351 + 51
#5 Object "Main.exe", at 0x104be221f, in camlCommon.protect_307 + 39
#4 Object "Main.exe", at 0x10501fddb, in camlStdlib__Fun.protect_326 + 107
#3 Object "Main.exe", at 0x104bee203, in camlUCommon.pp_do_in_zero_box_432 + 51
#2 Object "Main.exe", at 0x104bee703, in camlUCommon.fun_1206 + 51
#1 Object "Main.exe", at 0x1029eab17, in camlPro_core_CLI.run_898 + 1687
#0 Object "Main.exe", at 0x103150c3c, in camlCore_scan.scan_5956 + 140
```
</details>
and a marshalling segfault out in the wild:
<details>
<summary>Backtrace</summary>
```
Stack trace (most recent call last):
#31 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#30 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#29 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#28 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#27 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#26 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#25 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#24 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#23 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#22 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#21 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#20 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#19 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#18 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#17 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#16 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#15 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#14 Source "src/pro_scan/Pro_scan.ml", line 606, in camlPro_scan.scan_exn_4292 [0x60bdb7]
#13 Source "src/core/opentelemetry.ml", line 1312, in camlOpentelemetry.with__2580 [0x23b2f52]
#12 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#11 Source "OSS/src/core_scan/Core_scan.ml", line 738, in camlCore_scan.fun_7477 [0xbe214b]
#10 Source "OSS/src/core_scan/Core_scan.ml", line 628, in camlCore_scan.parmap_map_5319 [0xbe4c67]
#9 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#8 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#7 Source "OSS/libs/parallelism/Parmap_.ml", line 169, in camlParmap_.parmap_479 [0x238ccbe]
#6 Source "OSS/libs/commons/Common.ml", line 53, in camlCommon.protect_307 [0x240497b]
#5 Source "/root/.opam/5.3.0/.opam-switch/build/ocaml-compiler.5.3.0/stdlib/fun.ml", line 34, in camlStdlib__Fun.protect_326 [0x27bf47a]
#4 Source "src/parmap.ml", line 401, in camlParmap.mapper_1352 [0x2390ca3]
#3 Source "src/parmap.ml", line 115, in camlParmap.unmarshal_860 [0x238f495]
#2 Object "/usr/lib/python3.12/site-packages/semgrep/bin/semgrep-core-proprietary", at 0x30a695a, in caml_c_call
#1 Source "runtime/intern.c", line 993, in caml_input_value_from_block [0x308b6fb]
#0 Source "runtime/intern.c", line 762, in caml_parse_header [0x308a109]
```
</details>
synced from Pro a5dc2cd7fd0d8736642572760d2ff6a05adbed4e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /