ETS - PushEventHandler is one trigger of segfaults

I am relieved to report that I found one of the primary triggers causing segfaults in my attempt to update the traitsui/pyface packages for use with wxPython Phoenix under Python 3. The culprit is the PushEventHandler method. At this point I have not studied the situation sufficiently to identify why this is behaving so badly, so I can’t be more specific about the underlying contexts. I have merely commented out the method wherever it occurs, and I am happy to say that a large fraction of things are working well. In particular, with Mayavi2 or mayavi.mlab, the pipeline browser is working well except for anything with a grid or a slider range. Movement of any slider I’ve tried has just been getting ignored - no error messages, but no evil responses either.

At this point, anything with a traited grid is still segfaulting, including some optional advanced configuration windows in Mayavi.

Cheers,
Eric

···

The common tripping points with PushEventHandler is that each one needs to use a new instance, you can’t share or reuse event handlers. The other is that you must pop or remove the event handlers before the window is destroyed.

Also, be sure you’re on the newest traitsui, I fixed some PushEventHandler related things last year that I ran into with wxPython 3.0 Classic.

Robin

···

On Monday, April 10, 2017 at 3:00:49 PM UTC-7, braidedlogix wrote:

I am relieved to report that I found one of the primary triggers causing segfaults in my attempt to update the traitsui/pyface packages for use with wxPython Phoenix under Python 3. The culprit is the PushEventHandler method. At this point I have not studied the situation sufficiently to identify why this is behaving so badly, so I can’t be more specific about the underlying contexts. I have merely commented out the method wherever it occurs, and I am happy to say that a large fraction of things are working well. In particular, with Mayavi2 or mayavi.mlab, the pipeline browser is working well except for anything with a grid or a slider range. Movement of any slider I’ve tried has just been getting ignored - no error messages, but no evil responses either.

At this point, anything with a traited grid is still segfaulting, including some optional advanced configuration windows in Mayavi.

Cheers,
Eric

I have done both ets checkouts and just used the versions shipping with conda. Could you help me find the specific repository/version that are sure to have your revisions?

Many Thanks,
Eric

The master copies are on github, GitHub - enthought/traits: Observable typed attributes for Python classes and GitHub - enthought/traitsui: TraitsUI: Traits-capable windowing framework

It looks like my changes were longer ago than “last year” so if you have 5.0 you should have them.

Robin

···

On Monday, April 10, 2017 at 4:41:18 PM UTC-7, braidedlogix wrote:

I have done both ets checkouts and just used the versions shipping with conda. Could you help me find the specific repository/version that are sure to have your revisions?

Thanks for the links. My spot checking in critical points suggests that I have in fact been using versions that include your changes.

I’ve been testing and probing to the extent possible trying to pick off deprecated and python3 problems, and will return soon enough to event pushing to see if I can’t identify the specific things that make PushEventHandler not work in this case.

I can say for certain that PushEventHandler is not the cause of segfaults for the grid modules.

Well, I have to wonder what all of the “PushEventHandler()” statements accomplish in traitsui, because I’ve managed to get everything but the grids to function.

I am really excited to report that Mayavi2 and mavavi.mlab are fully functioning except for advanced editor dialogs that involve grid traits.

I “rediscovered” the TraitsUI demo folder, and most things appear to be running properly with only minor formatting issues. The examples not working either depend on the grid traits or depend on unavailable items.

Cheers,
Eric