cwensley / pablodraw

PabloDraw is an Ansi/Ascii text and RIPscrip vector graphic art editor/viewer with multi-user capabilities.
MIT License
315 stars 21 forks source link

segfault converting at command line under Linux #45

Closed Sembiance closed 2 years ago

Sembiance commented 2 years ago

Running very latest github source code, built and run on Linux (dotnet-sdk 6.0.101 and gtk-sharp 2.12.45 and gtk+ 3.24.30), I can launch PabloDraw and with the GUI and I can open a .RIP file and save it as a PNG.

However attempting to do so via command line with PabloDraw --convert=DRAGON01.RIP --out=out.png fails:

Converting 'DRAGON01.RIP' (rip.rip) to 'out.png' (image.png)

(process:15282): Gtk-CRITICAL **: 09:31:39.677: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed

(process:15282): Gtk-CRITICAL **: 09:31:39.677: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed

(process:15282): Gtk-CRITICAL **: 09:31:39.677: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed

Thread 1 "PabloDraw" received signal SIGSEGV, Segmentation fault.
0x00007ffff01a90f0 in ?? () from /usr/lib64/libgtk-3.so.0
(gdb) bt
#0  0x00007ffff01a90f0 in  () at /usr/lib64/libgtk-3.so.0
#1  0x00007ffff004de54 in  () at /usr/lib64/libgtk-3.so.0
#2  0x00007ffff006e5c8 in  () at /usr/lib64/libgtk-3.so.0
#3  0x00007ffff005989a in  () at /usr/lib64/libgtk-3.so.0
#4  0x00007ffff006e498 in  () at /usr/lib64/libgtk-3.so.0
#5  0x00007ffff005a1d2 in  () at /usr/lib64/libgtk-3.so.0
#6  0x00007ffff08d7143 in g_type_create_instance () at /usr/lib64/libgobject-2.0.so.0
#7  0x00007ffff08bdbd5 in  () at /usr/lib64/libgobject-2.0.so.0
#8  0x00007ffff08bf10d in g_object_new_with_properties () at /usr/lib64/libgobject-2.0.so.0
#9  0x00007ffff08bfab9 in g_object_new () at /usr/lib64/libgobject-2.0.so.0
#10 0x00007ffff0076d7b in  () at /usr/lib64/libgtk-3.so.0
#11 0x00007ffff025c8dd in  () at /usr/lib64/libgtk-3.so.0
#12 0x00007ffff08d7143 in g_type_create_instance () at /usr/lib64/libgobject-2.0.so.0
#13 0x00007ffff08bdbd5 in  () at /usr/lib64/libgobject-2.0.so.0
#14 0x00007ffff08bf10d in g_object_new_with_properties () at /usr/lib64/libgobject-2.0.so.0
#15 0x00007ffff08bfab9 in g_object_new () at /usr/lib64/libgobject-2.0.so.0
#16 0x00007fffeff83a9c in gtk_alignment_new () at /usr/lib64/libgtk-3.so.0
#17 0x00007fff7e85bfe8 in  ()
#18 0x0000000000000000 in  ()

Researching online, it looks like a call to gtk_init must not have been made: https://github.com/Zren/plasma-hud/issues/20 https://github.com/mono/gtk-sharp/blob/main/gtk/Application.cs

However ideally, PabloDraw would detect that I'm just attempting to do a command line conversion and would never even try to load GTK or any other GUI stuff.

The older 3.2.1 version works fine (ran with mono PabloDraw.Console.exe)

File I'm converting: https://telparia.com/fileFormatSamples/image/ripScrip/DRAGON01.RIP