Package: python3-babeltrace Version: 1.5.6-2 Severity: important While investigating why I was getting a segfault while processing a CTF trace (in which I do a first pass extracting some info, before a second pass plotting the data... while keeping a ref to various events to avoid making copies of everything in the first pass), I finally understand that even though we get individual python handles for all events, they get clobbered by further event parsing.
This script: ----->8------ #!/usr/bin/env python3 import babeltrace import sys trace_collection = babeltrace.TraceCollection() trace_collection.add_traces_recursive(sys.argv[1], 'ctf') mylist = [] for event in trace_collection.events: print(event, event.timestamp) mylist.append(event) print("====") for event in mylist: print(event, event.timestamp) ----->8------ shows: <babeltrace.babeltrace.Event object at 0x7f0a0e727550> 1555157078087460409 <babeltrace.babeltrace.Event object at 0x7f0a0e7278d0> 1555157078447798861 <babeltrace.babeltrace.Event object at 0x7f0a0e727908> 1555157079242934356 ... <babeltrace.babeltrace.Event object at 0x7f0a0dfee320> 1555157103166619955 <babeltrace.babeltrace.Event object at 0x7f0a0dfee6a0> 1555157103183287540 <babeltrace.babeltrace.Event object at 0x7f0a0dfeea20> 1555157103200021333 ==== <babeltrace.babeltrace.Event object at 0x7f0a0e727550> 1555157103200021333 <babeltrace.babeltrace.Event object at 0x7f0a0e7278d0> 1555157103200021333 <babeltrace.babeltrace.Event object at 0x7f0a0e727908> 1555157103200021333 ... <babeltrace.babeltrace.Event object at 0x7f0a0dfee320> 1555157103200021333 <babeltrace.babeltrace.Event object at 0x7f0a0dfee6a0> 1555157103200021333 <babeltrace.babeltrace.Event object at 0x7f0a0dfeea20> 1555157103200021333 Something feels Just Wrong here, and I somehow feel it could be linked to my script seeing, while attempting to access fields of Event objects after keeping a ref to them: ===== $ gdb --args python3 ../scripts/graph-lttstats.py .../ust/ (gdb) r ... Program received signal SIGSEGV, Segmentation fault. bt_ctf_get_top_level_scope (ctf_event=ctf_event@entry=0xa64188, scope=BT_EVENT_FIELDS) at events.c:89 89 events.c: No such file or directory. (gdb) directory /home/yann/soft/babeltrace/babeltrace-1.5.6/formats/ctf Source directories searched: /home/yann/soft/babeltrace/babeltrace-1.5.6/formats/ctf:$cdir:$cwd (gdb) l 84 case BT_EVENT_CONTEXT: 85 if (event->event_context) 86 tmp = &event->event_context->p; 87 break; 88 case BT_EVENT_FIELDS: 89 if (event->event_fields) 90 tmp = &event->event_fields->p; 91 break; 92 } 93 return tmp; (gdb) p event $1 = (const struct ctf_event_definition *) 0x5f2f64616f6c6e79 (gdb) p* ctf_event $2 = {parent = 0x5f2f64616f6c6e79} (gdb) p* ctf_event->parent Cannot access memory at address 0x5f2f64616f6c6e79 =====