Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

Trying to read last event from data file causes segmentation fault

#14

The attached Python script causes a segmentation fault on most (but not all) of the data files I've tried it with. The output typically looks like this:

$ ./print_last_event.py qlq.mwk
time    = 24054249
code    = 1
value   = {'payload': {'paused': 0, 'loaded': 1, 'running': 0, 'experiment path': '/var/folders/v1/v1qsITo9GJezLwbJ2VOfM++++TI/-Tmp-/MWorks/Experiment Cache/_Users_cstawarz_Documents_Work_McGovern_mworks_mw_suite_mw_examples_Tests_Action_QueueLiveQueue', 'experiment name': 'MyExperiment'}, 'payload_type': 4013, 'event_type': 1002}

time    = 211897957
code    = 3
Segmentation fault

Using the MATLAB getEvents function produces a similar result, so the problem isn't specific to the Python interface.

The crash happens at PythonDataBindingsHelpers.cpp:208, when trying to dereference a bogus pointer (e.g. 0x3) to a ScarabDatum struct. The bad pointer comes from EventWrapper::getPayload. The time on the event is suspect (~10x the time stamp of the previous event), which makes me think the whole event is bogus.

Is dfindex mistakenly reading past the end of the event stream? Or is there unexpected, non-event data at the end of the data file?

Reported by Christopher Stawarz · July 6th, 2010 @ 02:15 PM

State: resolved
Milestone: 0.4.5
Assigned to: Christopher Stawarz Christopher Stawarz

Activity

  1. Christopher Stawarz
  2. Christopher Stawarz
    Christopher Stawarz
    • State changed from new to resolved
    • Assigned user set to Christopher Stawarz

    Fixed in mw_datatools commit c47948122735119859c4f5dd2ae565fa77478423.

    The problematic last event was a RESERVED_TERMINATION_CODE event generated by ScarabWriteConnection. The event has a code and time but no payload (i.e. it's a list of length 2, instead of the typical 3). The time looks funny because it's absolute, not relative to the base time like the other events.

    EventWrapper::getPayload and getScarabEventPayload now return NULL for payload-free events.

    July 8th, 2010 @ 03:11 PM

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.