Ticket #7190 (assigned)

Opened 7 years ago

Last modified 5 years ago

Mantid-VATES with Python Control

Reported by: Owen Arnold Owned by: Owen Arnold
Priority: blocker Milestone: Backlog
Component: GUI Keywords:
Cc: reuterma@…, martyn.gigg@… Blocked By:
Blocking: Tester:

Description (last modified by Michael Reuter) (diff)

  • Build paraveiw with python enabled
  • Build Mantid with MAKE_VATES enabled
  • Bring up the VSI - Crash

This is a blocker to introducing the Horace syntax!

Attachments

pvpython_st.txt (12.1 KB) - added by Michael Reuter 7 years ago.
Full stack trace for crash

Change History

comment:1 Changed 7 years ago by Martyn Gigg

First question: Does it use its own in-built version of Python? If so, that's going to cause problems.

comment:2 Changed 7 years ago by Michael Reuter

No, it doesn't use it's own. It uses our instance that is fired up during the ConfigService initialization. This is where I fear that things are going wrong. When diagnosing the issue, the check code in ParaView says that python is already initialized. However, none of the standard python modules works correctly. The code crashes on trying to execute something from the signal module. However, I also tried running the sys module and that seg faulted in the same manner. The Mantid plugins can be used from within ParaView without any issue. Here is where it's going wrong:

VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx
202	      PyRun_SimpleString("import signal;"
203	                         "signal.signal(signal.SIGINT, signal.SIG_DFL);");

comment:3 Changed 7 years ago by Martyn Gigg

Do you have a stack trace from the crash?

Changed 7 years ago by Michael Reuter

Full stack trace for crash

comment:4 Changed 7 years ago by Nick Draper

  • Component changed from VATES to User Interface

comment:5 Changed 7 years ago by Nick Draper

  • Milestone changed from Release 2.6 to Backlog

Moved to backlog at R2.6 code freeze

comment:6 Changed 7 years ago by Michael Reuter

  • Description modified (diff)

Utkarsh from Kitware let me know that this code changed recently and that I should look at this again. Indeed, it did change, but the result was the same, a crash while trying to access the path object from the sys module. With Martyn's help, I've fixed this by making two uses of the GlobalInterpreterLock struct. Apparently, Mantid leave python initialized, but without a hold of the GIL. So, when ParaView came behind and tried to call C-API functions, it segfaulted. It looks like we should now be able to compile ParaView with python or be able to use the stock kits Kitware provides. These changes will only work well for the next release of ParaView which is slated for November.

comment:7 Changed 7 years ago by Nick Draper

  • Status changed from new to assigned

Bulk move to assigned at the introduction of the triage step

comment:8 Changed 6 years ago by Nick Draper

Owen is this really a blocker? I suspect not, but if so it really doesn't belong in the backlog

comment:9 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 8036

Note: See TracTickets for help on using tickets.