Fast GL Preview crashes when built with wxWidgets 3.1.5: Error initialising GLEW

Bug #1938453 reported by Badshah400
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Hugin
Fix Released
Undecided
Unassigned

Bug Description

Note: Bug originally reported against openSUSE: <https://bugzilla.suse.com/show_bug.cgi?id=1188519>

When compiled against wxWidgets 3.1.5, hugin crashes upon launch with the following error:
---
(hugin:15406): Gtk-CRITICAL **: 20:41:54.916: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:54.946: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.101: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.102: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.104: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.105: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.105: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.113: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.114: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.115: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.115: gtk_widget_set_size_request:
assertion 'height >= -1' failed

(hugin:15406): Gtk-CRITICAL **: 20:41:55.115: gtk_widget_set_size_request:
assertion 'height >= -1' failed
ERROR: 20:41:55.509290 (/home/abuild/rpmbuild/BUILD/hugin-2020.0.0/src/hugin1/
hugin/GLViewer.cpp:133) SetUpContext(): Error initialising GLEW: Unknown
error.
Segmentation fault (core dumped)
---

This is with Hugin version 2020.0.0 and wxWidgets 3.1.5. Some users have reported that just the Fast GL Preview doesn't show up while Hugin keeps working.

When compiled against wxWidgets 3.1.4, everything works perfectly.

When built against wxWidgets 3.1.4, Hugin works just fine, which makes me think that EGL-related changes in wxWidgets 3.1.5 <https://github.com/wxWidgets/wxWidgets/pull/2038> may be a reason, but this is just a guess.

Thanks for the great application, btw.

Revision history for this message
Badshah400 (badshah400) wrote :

Seen on both Wayland and X11

Revision history for this message
tmodes (tmodes) wrote :

When wxWidgets is compiled with egl, glew needs also be compiled with egl support.
Is this done?

PS: I assume you have built Hugin with -DUSE_GDKBACKEND_X11=on (otherwise it would crash on Wayland.) So Wayland or X11 should not matter, Hugin is forcing in this case to X11 internally.

Revision history for this message
Badshah400 (badshah400) wrote :

> When wxWidgets is compiled with egl, glew needs also be compiled with egl support.
Is this done?

Glew wasn't and doing that fixed the crash. Many thanks for hitting the nail right on the head.

We do build hugin with `-DUSE_GDKBACKEND_X11=on`, so yes X11 or Wayland doesn't actually matter.

Revision history for this message
tmodes (tmodes) wrote :

Tanks for confirmation.
Because it was a compile switch for glew and not Hugin itself setting status to invalid.

When wxWidgets is built with egl the workaround with -DUSE_GDKBACKEND_X11=on should not be needed anymore and can be removed.

PS: When you switch in wxWidgets to egl only the fast preview window is affected.
For Nona and align_image_stack you can also trying to switch to egl by adding -DBUILD_WITH_EGL=on to the CMake command line.

Changed in hugin:
status: New → Invalid
Revision history for this message
Badshah400 (badshah400) wrote :
Download full text (4.9 KiB)

Thanks for the suggestions. All implemented, except...

> For Nona and align_image_stack you can also trying to switch to egl by adding -DBUILD_WITH_EGL=on to the CMake command line.

When I do this, the build fails because the linker no longer links against X11. Seems this in the CMakeLists.txt fixes the linking problem and the build works again, but the `NOT HAVE_EGL` is probably there for a reason:

```
-IF(NOT APPLE AND NOT WIN32 AND NOT HAVE_EGL)
+IF(NOT APPLE AND NOT WIN32)
 MESSAGE(STATUS "Searching X11 header")
 FIND_PACKAGE(X11 REQUIRED)
 ENDIF()

```

Error log:

```
[ 39s] /var/lib/build/ccache/bin/c++ -fPIC -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -pthread -O2 -g -DNDEBUG -flto=auto -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -fopenmp -shared -Wl,-soname,libhuginbasewx.so.0.0 -o libhuginbasewx.so.0.0 CMakeFiles/huginbasewx.dir/wxImageCache.cpp.o CMakeFiles/huginbasewx.dir/MyProgressDialog.cpp.o CMakeFiles/huginbasewx.dir/PTWXDlg.cpp.o CMakeFiles/huginbasewx.dir/huginConfig.cpp.o CMakeFiles/huginbasewx.dir/MyExternalCmdExecDialog.cpp.o CMakeFiles/huginbasewx.dir/platform.cpp.o CMakeFiles/huginbasewx.dir/RunStitchPanel.cpp.o CMakeFiles/huginbasewx.dir/LensTools.cpp.o CMakeFiles/huginbasewx.dir/wxLensDB.cpp.o CMakeFiles/huginbasewx.dir/HFOVDialog.cpp.o CMakeFiles/huginbasewx.dir/Command.cpp.o CMakeFiles/huginbasewx.dir/PanoCommand.cpp.o CMakeFiles/huginbasewx.dir/wxPanoCommand.cpp.o CMakeFiles/huginbasewx.dir/CommandHistory.cpp.o CMakeFiles/huginbasewx.dir/Executor.cpp.o CMakeFiles/huginbasewx.dir/AssistantExecutor.cpp.o CMakeFiles/huginbasewx.dir/StitchingExecutor.cpp.o CMakeFiles/huginbasewx.dir/wxcms.cpp.o CMakeFiles/huginbasewx.dir/wxPlatform.cpp.o CMakeFiles/huginbasewx.dir/GraphTools.cpp.o -Wl,-rpath,/home/abuild/rpmbuild/BUILD/hugin-2020.0.0/build/src/hugin_base: -L/usr/lib64 -pthread -lwx_baseu-3.1 -lwx_gtk3u_core-3.1 -lwx_gtk3u_aui-3.1 -lwx_gtk3u_xrc-3.1 -lwx_gtk3u_html-3.1 -lwx_baseu_xml-3.1 -lwx_gtk3u_gl-3.1 -lwx_baseu_net-3.1 -lwx_gtk3u_qa-3.1 ../../hugin_base/libhuginbase.so.0.0 /usr/lib64/libpano13.so ../../foreign/levmar/libhuginlevmar.a /usr/lib64/libGLEW.so /usr/lib64/libboost_filesystem.so.1.76.0 /usr/lib64/libboost_system.so.1.76.0 /usr/lib64/liblapack.so /usr/lib64/libblas.so /usr/lib64/libfftw3.so /usr/lib64/libvigraimpex.so /usr/lib64/libImath-2_5.so /usr/lib64/libIlmImf-2_5.so /usr/lib64/libIex-2_5.so /usr/lib64/libHalf-2_5.so /usr/lib64/libIlmThread-2_5.so /usr/lib64/libz.so /usr/lib64/libjpeg.so /usr/lib64/libtiff.so /usr/lib64/libpng.so /usr/lib64/libz.so /usr/lib64/libz.so /usr/lib64/libexiv2.so /usr/lib64/liblcms2.so /usr/lib64/libjpeg.so /usr/lib64/libpng.so /usr/lib64/libtiff.so /usr/lib64/libexiv2.so -pthread /usr/lib64/libOpenGL.so /usr/lib64/libGLX.so /usr/lib64/libGLU.so /usr/lib64/libEGL.so /usr/lib64/libGLEW.so /usr/lib64/libsqlite3.so /usr/lib64/liblcms2.so
[ 39s] /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: /tmp/ccHfmLJI.ltrans10.ltrans.o: in function `HuginBase::Color::detail::GetProfileFromAtom(_XDisplay*, char const*)':
[ 39s] /ho...

Read more...

Revision history for this message
tmodes (tmodes) wrote :

Thanks for feedback.

The code for getting the monitor profile needs the X11 header and libs. This was added after the egl code but not tested for this code path. I will look into this, but it will take some time.

Revision history for this message
tmodes (tmodes) wrote :

I fixed the issue with searching the X11 header in the repository.
I also added a hint in the compiling instruction about the issue.

Changed in hugin:
milestone: none → 2021.0beta1
status: Invalid → Fix Committed
Revision history for this message
Badshah400 (badshah400) wrote :

Awesome, thanks a lot for the quick responses, guidance, and fix.

tmodes (tmodes)
Changed in hugin:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.