[Therion] loch segmentation fault at launch

Bill Gee bgee at campercaver.net
Tue Jan 14 15:08:42 CET 2025


Oops!  I meant to send this to the entire list rather than just Olly.

===============
Bill Gee

On 1/14/25 07:06, Bill Gee wrote:
> Thanks Olly!  I gave this a try.  It works well.  This is on Fedora 41.
> 
> I am not familiar with how to build patch files, so I did this in a 
> slightly different way.
> 
> 1) Change to the source directory for loch (presumably already 
> downloaded from GIT).  In my case that is ~/Installs/therion-6.3.3/loch
> 
> 2) cp lxGUI.cxx lxGUI.cxx.backup
> 
> 3) Use a text editor to modify lxGUI.cxx.  Copy the lines from Olly's 
> message below starting with +#ifdev __WXGTK3__ and continuing to the 
> last +#endif.
> 
> 4) Paste those lines into lxGUI.cxx starting at line 75.  Save the file.
> 
> 5) Change to the build directory.  In my case: cd ~/Installs/ 
> therion-6.3.3/build
> 
> 6) Clean up files from previous compile:  make clean
> 
> 7) Compile just loch:  make -j 4 loch
> 
> 8) The new binary is in loch/loch.  In my case: ~/Installs/ 
> therion-6.3.3/build/loch/loch is the filename.
> 
> 9) Become root, then copy the new loch over the old one.  In my case:
> 
> #cp /home/bgee/Installs/therion-6.3.3/build/loch/loch /usr/local/bin
> 
> 
> ===============
> Bill Gee
> 
> On 1/13/25 19:38, Olly Betts wrote:
>> [Including the list in my reply as this seems of broader interest]
>>
>> On Mon, Jan 13, 2025 at 04:52:46PM -0600, Bill Gee wrote:
>>> Olly, you're a wizard for remembering that bit of arcana.  The 
>>> command line
>>> you suggested works.  No more seg faults in loch!
>>
>> Great.
>>
>>> I do not have any packages called "wxWidgets" installed.  On Fedora 
>>> they are
>>> called wxGTK.  Here is the list of packages I have:
>>>
>>> bgee at main2:~$ rpm -qa | grep -i wxGTK
>>> wxGTK-i18n-3.2.6-1.fc41.noarch
>>> wxGTK-3.2.6-1.fc41.x86_64
>>> wxGTK-gl-3.2.6-1.fc41.x86_64
>>> wxGTK-webview-3.2.6-1.fc41.x86_64
>>> wxGTK-media-3.2.6-1.fc41.x86_64
>>> wxGTK-devel-3.2.6-1.fc41.x86_64
>>
>> Its upstream project name is wxWidgets - wxGTK is the flavour using GTK,
>> which Fedora have chosen to use as their package name.
>>
>>> I also do not have any packages like "libglew".  It might be part of 
>>> the VTK
>>> package.  I see a file named vtk-glew.h.
>>
>> It's not part of VTK - that header seems to be some VTK layer for
>> supporting building with different versions of glew.
>>
>> I don't think wxWidgets or therion uses glew so you may well not have it
>> installed, but some other apps which use wxWidgets also use glew - I
>> think it's necessary that wxWidgets and glew agree on whether to use EGL
>> or not for those apps.
>>
>>> I will modify the launcher for loch to set the environment variable.
>>
>> We have a workaround in Survex's aven for this - I'd suggest something
>> similar in loch would be helpful as it would avoid these crashes
>> completely.  I'm not easily able to test this patch actually works as I
>> don't have Fedora but this or something like it should do the job (I
>> have checked it compiles on a platform where the conditionals both
>> evaluate true):
>>
>> diff --git a/loch/lxGUI.cxx b/loch/lxGUI.cxx
>> index fc00b31e..41a4583c 100644
>> --- a/loch/lxGUI.cxx
>> +++ b/loch/lxGUI.cxx
>> @@ -73,7 +73,29 @@
>>   #endif
>> +#ifdef __WXGTK3__
>> +# if !(wxUSE_GLCANVAS_EGL-0)
>> +#  include <stdlib.h>
>> +
>> +// The GLX-based wxGLCanvas doesn't work under Wayland, and the code
>> +// segfaults: https://github.com/wxWidgets/wxWidgets/issues/17702
>> +//
>> +// Therefore we force X11 unless we're using the EGL-based wxGLCanvas
>> +// (which was added in wxWidgets 3.1.5 and hasn't been backported to
>> +// 3.0.x).
>> +//
>> +// Setting GDK_BACKEND=x11 is the recommended workaround, and it 
>> seems to
>> +// work to set it here.  GTK2 doesn't support Wayland, so doesn't need
>> +// this.
>> +struct ForceX11 {
>> +    ForceX11() {
>> +       setenv("GDK_BACKEND", "x11", 1);
>> +    }
>> +};
>> +static ForceX11 forcex11;
>> +# endif
>> +#endif
>>   ////////////////////////////////////////////////////////////////////////
>>   // Main frame
>>
>>
>> Cheers,
>>      Olly
> 



More information about the Therion mailing list