Skip to content

Insitu Initialization Helper searches absolute path relatively to PYTHONPATH

Description

The catalyst_replay tool looks in the initialize_params.conduit.binXXX to reconstruct the init node, including the catalyst implementation name, path and python script in use. The implementation choice can be overridden using environment variables.

In ParaView Catalyst, one also need to find the python script. A fallback is to check under PYTHONPATH environment. Sadly, in that case the vtkInsituInitializationHelper uses the input script path as relative to those PYTHONPATH directories, while in our case it is an absolute path.

https://gitlab.kitware.com/paraview/paraview/-/blob/master/Clients/InSitu/vtkInSituInitializationHelper.cxx?ref_type=heads#L261

So it fails with the warning

[pvbatch         ]vtkInSituInitialization:272   WARN| File/path does not exist and not in PYTHONPATH

Also in my case it also ends with a segfault:

[Bashful:185250:0:185250] Caught signal 11 (Segmentation fault: address not mapped to object at address 0x70)
==== backtrace (tid: 185250) ====
 0 0x000000000004d212 ucs_event_set_fd_get()  ???:0
 1 0x000000000004d3dd ucs_event_set_fd_get()  ???:0
 2 0x000000000003d1d0 __sigaction()  ???:0
 3 0x0000000000019f66 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::size()  /usr/include/c++/14.2.1/bits/stl_vector.h:993
 4 0x0000000000023abf std::operator==<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >()  /usr/include/c++/14.2.1/bits/stl_vector.h:2051
 5 0x00000000000235ec std::operator!=<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >()  /usr/include/c++/14.2.1/bits/stl_vector.h:2097
 6 0x00000000000227d0 vtkInSituPipelinePython::SetArguments()  /home/nicolas/ParaView/master/build/../Clients/InSitu/vtkInSituPipelinePython.cxx:46
 7 0x000000000000637d process_script_args()  /home/nicolas/ParaView/master/build/../Clients/InSitu/catalyst/ParaViewCatalyst.cxx:172
 8 0x0000000000006cf4 catalyst_initialize_paraview()  /home/nicolas/ParaView/master/build/../Clients/InSitu/catalyst/ParaViewCatalyst.cxx:283
 9 0x00000000003fcb25 catalyst_initialize()  /home/nicolas/Softwares/catalyst/source/src/catalyst/catalyst_api.c:271
10 0x0000000000006cce replay_catalyst_initialize()  /home/nicolas/Softwares/catalyst/source/src/tools/replay/catalyst_replay.cpp:65
11 0x0000000000007fb6 main()  /home/nicolas/Softwares/catalyst/source/src/tools/replay/catalyst_replay.cpp:410
12 0x0000000000025e08 __libc_init_first()  ???:0
13 0x0000000000025ecc __libc_start_main()  ???:0
14 0x00000000000067c5 _start()  ???:0

Steps to reproduce

One must first run a simulation to dump some data, according to https://catalyst-in-situ.readthedocs.io/en/latest/catalyst_replay.html

then:

$ catalyst_replay dump_dir

using CATALYST_DEBUG=1 may be useful to be sure of which implementation is found.

Configuration

  • Operating system and version: archlinux
  • ParaView executable and version: master (post 5.13)
  • ParaView configuration: catalyst
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information