Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix: segmentation fault on filter interpretation in "switch" mode
When building the interpreter with `INTERPRETER_USE_SWITCH`, I get the following crash when interpreting a bytecode: Program terminated with signal SIGSEGV, Segmentation fault. (gdb) bt #0 0x00007f5789aee443 in lttng_bytecode_interpret (ust_bytecode=0x555dfe90a650, interpreter_stack_data=0x7ffd12615500 "", probe_ctx=0x7ffd12615620, caller_ctx=0x7ffd126154bc) at lttng-bytecode-interpreter.c:885 #1 0x00007f5789af4da2 in lttng_ust_interpret_event_filter (event=0x555dfe90a580, interpreter_stack_data=0x7ffd12615500 "", probe_ctx=0x7ffd12615620, event_filter_ctx=0x0) at lttng-bytecode-interpreter.c:2548 #2 0x0000555dfe02d2d4 in lttng_ust__event_probe__tp___the_string (__tp_data=0x555dfe90a580, i=0, arg_i=2, str=0x7ffd12617cfa "hypothec") at ././tp.h:16 #3 0x0000555dfe02cac0 in lttng_ust_tracepoint_cb_tp___the_string (str=0x7ffd12617cfa "hypothec", arg_i=2, i=0) at /tmp/lttng-master/src/lttng-tools/tests/utils/testapp/gen-ust-nevents-str/tp.h:16 #4 main (argc=39, argv=0x7ffd12615818) at gen-ust-nevents-str.cpp:38 This appears to be caused by `bytecode->data` being used to determine the `start_pc` address. In my case, `data` is NULL. A quick look around the code seems to show that this member is not used except during the transmission of the bytecode. I am basing the fix on the implementation of START_OP in the default case which uses `code` in lieu of `data` and can confirm that it fixes the crash on my end. Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Change-Id: I0773df385b8e90728b60503016dec4b46d902234
- Loading branch information