Hello,
I am trying to load my own plugin (called BDMGlyphFilter) that I have built in the superbuild development environment (the CATALYST_RENDERING
edition, at the v5.8.0 tag), into the ParaView client from the official download page (v5.8.0). I add the directory of BDMGlyphFilter.so
to the PV_PLUGIN_PATH
envar, so that it is loaded upon startup. I also add the directory of the libBDM.so
to LD_LIBRARY_PATH
, which is the shared library generated when generating the plugin. The plugin code can be found here: https://github.com/BioDynaMo/biodynamo/tree/upgrade-paraview-5.8/paraview_plugin
This results in the following segfault upon startup (with verbose output):
ahmad: $ env PARAVIEW_LOG_PLUGIN_VERBOSITY=0 ~/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/paraview
( 0.024s) [paraview ] vtkPVPlugin.cxx:62 INFO| Import status: success
----------------------------------------------------------
Importing plugin: **vtkPVInitializerPlugin**
name: vtkPVInitializerPlugin
version: 0.0
filename: (nullptr)
required-on-server: 0
required-on-client: 0
has-eula: 0
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:244 INFO| PV_PLUGIN_PATH: /home/ahmad/biodynamo/build/lib/pv_plugin
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:270 INFO| appDir: /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/plugins
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:244 INFO| PV_PLUGIN_PATH: /home/ahmad/biodynamo/build/lib/pv_plugin
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:270 INFO| appDir: /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/plugins
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:296 INFO| Loading Plugins from standard PLUGIN_PATHS
/home/ahmad/biodynamo/build/lib/pv_plugin:/home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/plugins
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:342 INFO| Loading plugins in Path: /home/ahmad/biodynamo/build/lib/pv_plugin
( 0.024s) [paraview ] vtkPVPluginLoader.cxx:446 INFO| Attempting to load: /home/ahmad/biodynamo/build/lib/pv_plugin/libBDM.so
( 0.025s) [paraview ] vtkPVPluginLoader.cxx:526 INFO| Loaded shared library successfully. Now trying to validate that it's a ParaView plugin.
( 0.025s) [paraview ] vtkPVPluginLoader.cxx:542 INFO| We've encountered an error locating the other global function "pv_plugin_instance" which is required to locate the instance of the vtkPVPlugin class. Possibly the plugin shared library was not compiled properly.
( 0.025s) [paraview ] vtkPVPluginLoader.cxx:446 INFO| Attempting to load: /home/ahmad/biodynamo/build/lib/pv_plugin/BDMGlyphFilter.so
( 0.026s) [paraview ] vtkPVPluginLoader.cxx:526 INFO| Loaded shared library successfully. Now trying to validate that it's a ParaView plugin.
( 0.027s) [paraview ] vtkPVPluginLoader.cxx:244 INFO| PV_PLUGIN_PATH: /home/ahmad/biodynamo/build/lib/pv_plugin
( 0.027s) [paraview ] vtkPVPluginLoader.cxx:270 INFO| appDir: /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/plugins
( 0.027s) [paraview ] vtkPVPlugin.cxx:62 INFO| Import status: success
----------------------------------------------------------
Importing plugin: **BDMGlyphFilter**
name: BDMGlyphFilter
version: 1.0
filename: /home/ahmad/biodynamo/build/lib/pv_plugin/BDMGlyphFilter.so
required-on-server: 1
required-on-client: 1
has-eula: 0
( 0.027s) [paraview ] vtkPVPluginLoader.cxx:342 INFO| Loading plugins in Path: /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/plugins
Loguru caught a signal: SIGSEGV
Stack trace:
23 0x407a7d /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/paraview() [0x407a7d]
22 0x7f905b2de830 __libc_start_main + 240
21 0x407734 /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/paraview() [0x407734]
20 0x40c502 /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/paraview() [0x40c502]
19 0x408939 /home/ahmad/Downloads/ParaView-5.8.0-MPI-Linux-Python3.7-64bit/bin/paraview() [0x408939]
18 0x7f905af594d1 pqParaViewBehaviors::pqParaViewBehaviors(QMainWindow*, QObject*) + 1041
17 0x7f905aecfea5 pqAlwaysConnectedBehavior::pqAlwaysConnectedBehavior(QObject*) + 293
16 0x7f905aecfd14 pqAlwaysConnectedBehavior::serverCheck() + 132
15 0x7f9059ae98a7 pqObjectBuilder::createServer(pqServerResource const&, int) + 199
14 0x7f905821573b vtkSMSession::ConnectToSelf(int) + 91
13 0x7f9058213cb2 vtkSMSession::New() + 34
12 0x7f9058213c35 vtkSMSession::vtkSMSession(bool, vtkPVSessionCore*) + 197
11 0x7f9058131a4b vtkPVSessionCore::New() + 27
10 0x7f90581313d2 vtkPVSessionCore::vtkPVSessionCore() + 2258
9 0x7f905815b2cb vtkSIProxyDefinitionManager::New() + 27
8 0x7f905815b1c5 vtkSIProxyDefinitionManager::vtkSIProxyDefinitionManager() + 357
7 0x7f905815ae96 vtkSIProxyDefinitionManager::HandlePlugin(vtkPVPlugin*) + 198
6 0x7f905815ad5a vtkSIProxyDefinitionManager::LoadConfigurationXMLFromString(char const*, bool) + 42
5 0x7f9056421bd8 vtkXMLParser::Parse(char const*) + 24
4 0x7f90564222ba vtkXMLParser::Parse() + 346
3 0x7f9056422bbd vtkXMLParser::ParseXML() + 125
2 0x7f9056421eac vtkXMLParser::ParseBuffer(char const*) + 28
1 0x7f905b349746 strlen + 38
0 0x7f905b2f34b0 /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7f905b2f34b0]
( 0.243s) [paraview ] :0 FATL| Signal: SIGSEGV
Segmentation fault (core dumped)
:0 FATL| Signal: SIGSEGV
In the mailing list of about 2 years ago I found: https://www.paraview.org/pipermail/paraview-developers/2018-March/005814.html
This user reported that using different compilers for compiling the plugin and compiling the client was the cause of his segfault (which is one similar to mine).
Is it possible to load plugins that have been compiled with a different compiler toolchain than the one used for compiling the official binary releases? If so, could you please help me out on how I can fix this issue. If not, is there a way to mimic the build system that Kitware uses for the PV releases (e.g. a docker image)?
Best,
Ahmad