SLADE icon indicating copy to clipboard operation
SLADE copied to clipboard

Crash when exporting texture as PNG file

Open chewi opened this issue 2 years ago • 5 comments

SLADE Version: 3.2.1 (also happened in 3.2.0) Operating System: Gentoo Linux

Issue Details: From the texture editor, I select Texture -> Export To -> PNG File and it just crashes, even with no patches present. I don't think there's anything special about my texture.

Version: 3.2.1
Current action: txed_extract
Operating System: Linux 5.17.15-00009-g44c6e94fc66b x86_64
Graphics Vendor: AMD
Graphics Hardware: AMD Radeon RX 480 Graphics (polaris10, LLVM 13.0.1, DRM 3.44, 5.17.15-00009-g44c6e94fc66b)
OpenGL Version: 4.6 (Compatibility Profile) Mesa 22.2.0-devel (git-a6a4bf0f1e)

Stack Trace:
0: [unknown location] [unknown:140358114631456]
1: [unknown location] [unknown:140358093675216]
2: [unknown location] [unknown:140358094813565]
3: [unknown location] slade::MemChunk::write(void const*, unsigned int)
4: [unknown location] SIFPng::writeImage(slade::SImage&, slade::MemChunk&, slade::Palette*, int)
5: [unknown location] slade::TextureXPanel::exportAsPNG(slade::CTexture*, wxString const&, bool) const
6: [unknown location] slade::TextureXPanel::extractTexture()
7: [unknown location] slade::TextureXPanel::handleAction(std::basic_string_view<char, std::char_traits<char> >)
8: [unknown location] slade::SActionHandler::doAction(std::basic_string_view<char, std::char_traits<char> >)
9: [unknown location] SLADEWxApp::onMenu(wxCommandEvent&)
10: [unknown location] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
11: [unknown location] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
12: [unknown location] wxEvtHandler::TryHereOnly(wxEvent&)
13: [unknown location] wxEvtHandler::ProcessEventLocally(wxEvent&)
14: [unknown location] wxEvtHandler::ProcessEvent(wxEvent&)
15: [unknown location] wxWindowBase::TryAfter(wxEvent&)
16: [unknown location] wxEvtHandler::SafelyProcessEvent(wxEvent&)
17: [unknown location] wxMenuBase::SendEvent(int, int)
18: [unknown location] [unknown:140358119067186]
19: [unknown location] g_closure_invoke
20: [unknown location] [unknown:140358093196618]
21: [unknown location] g_signal_emit_valist
22: [unknown location] g_signal_emit
23: [unknown location] gtk_widget_activate
24: [unknown location] gtk_menu_shell_activate_item
25: [unknown location] [unknown:140358103225763]
26: [unknown location] [unknown:140358104877001]
27: [unknown location] [unknown:140358093122233]
28: [unknown location] g_signal_emit_valist
29: [unknown location] g_signal_emit
30: [unknown location] [unknown:140358104517788]
31: [unknown location] [unknown:140358103136112]
32: [unknown location] gtk_main_do_event
33: [unknown location] [unknown:140358099900181]
34: [unknown location] [unknown:140358100115730]
35: [unknown location] g_main_context_dispatch
36: [unknown location] [unknown:140358088296184]
37: [unknown location] g_main_loop_run
38: [unknown location] gtk_main
39: [unknown location] wxGUIEventLoop::DoRun()
40: [unknown location] wxEventLoopBase::Run()
41: [unknown location] wxAppConsoleBase::MainLoop()
42: [unknown location] wxEntry(int&, wchar_t**)
43: [unknown location] main
44: [unknown location] [unknown:140358093591370]
45: [unknown location] __libc_start_main
46: [unknown location] _start

Last Log Messages:
Can't convert "[" to an integer (invalid)
Can't convert "[" to an integer (invalid)
SLADE Initialisation OK
Initialising OpenGL...
OpenGL Version: 4.6
Max Texture Size: 16384x16384
Checking extensions...
Vertex Buffer Objects supported
Point Sprites supported
Framebuffer Objects supported

The GDB output might also be useful:

#0  0x00007ffff5e5897d in  () at /lib64/libc.so.6
#1  0x0000555555fb857a in memcpy (__len=4294967263, __src=0x21, __dest=<optimized out>) at /usr/include/bits/string_fortified.h:29
#2  slade::MemChunk::write(void const*, unsigned int) (this=0x7fffffffc050, buffer=0x21, count=4294967263) at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/Utility/MemChunk.cpp:424
#3  0x0000555555ca619d in SIFPng::writeImage(slade::SImage&, slade::MemChunk&, slade::Palette*, int) (this=<optimized out>, image=<optimized out>, data=..., pal=<optimized out>, index=<optimized out>)
    at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/Graphics/SImage/Formats/SIFImages.h:537
#4  0x0000555555d7a141 in slade::SIFormat::saveImage(slade::SImage&, slade::MemChunk&, slade::Palette*, int) (index=0, pal=0x55555aaee3b0, out=..., image=..., this=0x5555574aeb00)
    at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/./Graphics/SImage/SIFormat.h:82
#5  slade::TextureXPanel::exportAsPNG(slade::CTexture*, wxString const&, bool) const (this=<optimized out>, texture=0x55555aafb9e0, filename=..., force_rgba=<optimized out>)
    at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/MainEditor/UI/TextureXEditor/TextureXPanel.cpp:1520
#6  0x0000555555d7aaee in slade::TextureXPanel::extractTexture() (this=0x55555aa52e90) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/bits/stl_vector.h:1043
#7  0x0000555555d7d6bd in slade::TextureXPanel::handleAction(std::basic_string_view<char, std::char_traits<char> >) (this=0x55555aa52e90, id="txed_extract")
    at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/MainEditor/UI/TextureXEditor/TextureXPanel.cpp:1720
#8  0x0000555555c79b54 in slade::SActionHandler::doAction(std::basic_string_view<char, std::char_traits<char> >) (id="txed_extract") at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/General/SAction.cpp:466
#9  0x0000555555b50d7c in SLADEWxApp::onMenu(wxCommandEvent&) (this=<optimized out>, e=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/string_view:137
#10 0x00007ffff71677de in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#11 0x00007ffff7167b6a in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#12 0x00007ffff7167c00 in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#13 0x00007ffff7167cbb in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#14 0x00007ffff7167da1 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#15 0x00007ffff76d4c39 in wxWindowBase::TryAfter(wxEvent&) () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0
#16 0x00007ffff7167af7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#17 0x00007ffff768646a in wxMenuBase::SendEvent(int, int) () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0
#18 0x00007ffff757be32 in  () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0
#19 0x00007ffff5cbb880 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#20 0x00007ffff5ccdd4a in  () at /usr/lib64/libgobject-2.0.so.0
#21 0x00007ffff5cd4459 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#22 0x00007ffff5cd4a17 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#23 0x00007ffff679ccac in gtk_widget_activate () at /usr/lib64/libgtk-3.so.0
#24 0x00007ffff665e2a6 in gtk_menu_shell_activate_item () at /usr/lib64/libgtk-3.so.0
#25 0x00007ffff665e5a3 in  () at /usr/lib64/libgtk-3.so.0
#26 0x00007ffff67f17c9 in  () at /usr/lib64/libgtk-3.so.0
#27 0x00007ffff5cbbab9 in  () at /usr/lib64/libgobject-2.0.so.0
#28 0x00007ffff5cd3b08 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#29 0x00007ffff5cd4a17 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#30 0x00007ffff6799c9c in  () at /usr/lib64/libgtk-3.so.0
#31 0x00007ffff6648770 in  () at /usr/lib64/libgtk-3.so.0
#32 0x00007ffff664a25d in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#33 0x00007ffff6334715 in  () at /usr/lib64/libgdk-3.so.0
#34 0x00007ffff6369112 in  () at /usr/lib64/libgdk-3.so.0
#35 0x00007ffff582143b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#36 0x00007ffff58216f8 in  () at /usr/lib64/libglib-2.0.so.0
#37 0x00007ffff58219e3 in g_main_loop_run () at /usr/lib64/libglib-2.0.so.0
#38 0x00007ffff66493bd in gtk_main () at /usr/lib64/libgtk-3.so.0
#39 0x00007ffff74f8e65 in wxGUIEventLoop::DoRun() () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0
#40 0x00007ffff703ee6d in wxEventLoopBase::Run() () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#41 0x00007ffff7005b2b in wxAppConsoleBase::MainLoop() () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#42 0x00007ffff7084e98 in wxEntry(int&, wchar_t**) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0
#43 0x0000555555abf5d8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/games-util/slade-3.2.1/work/SLADE-3.2.1/src/Application/SLADEWxApp.cpp:372

On seeing string_fortified.h, I tried building with -U_FORTIFY_SOURCE (Gentoo sets this by default) but it didn't make any difference.

chewi avatar Jun 28 '22 15:06 chewi

Version: 3.2.2
Current action: pgfx_convert
Operating System: Linux 6.1.27-gentoo-r1-x86_64 x86_64
Graphics Vendor: AMD
Graphics Hardware: AMD Radeon RX 570 Series (polaris10, LLVM 15.0.7, DRM 3.49, 6.1.27-gentoo-r1-x86_64)
OpenGL Version: 4.6 (Compatibility Profile) Mesa 23.0.3

Stack Trace:
0: [unknown location] [unknown:140632764818288]
1: [unknown location] [unknown:140632746512224]
2: [unknown location] [unknown:140632747668169]
3: [unknown location] slade::MemChunk::write(void const*, unsigned int)
4: [unknown location] SIFPng::writeImage(slade::SImage&, slade::MemChunk&, slade::Palette*, int)
5: [unknown location] slade::SIFormat::saveImage(slade::SImage&, slade::MemChunk&, slade::Palette*, int)
6: [unknown location] slade::GfxEntryPanel::handleEntryPanelAction(std::basic_string_view<char, std::char_traits<char> >)
7: [unknown location] slade::SActionHandler::doAction(std::basic_string_view<char, std::char_traits<char> >)
8: [unknown location] SLADEWxApp::onMenu(wxCommandEvent&)
9: [unknown location] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
10: [unknown location] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
11: [unknown location] wxEvtHandler::TryHereOnly(wxEvent&)
12: [unknown location] wxEvtHandler::ProcessEventLocally(wxEvent&)
13: [unknown location] wxEvtHandler::ProcessEvent(wxEvent&)
14: [unknown location] wxWindowBase::TryAfter(wxEvent&)
15: [unknown location] wxWindowBase::TryAfter(wxEvent&)
16: [unknown location] wxEvtHandler::SafelyProcessEvent(wxEvent&)
17: [unknown location] wxMenuBase::SendEvent(int, int)
18: [unknown location] [unknown:140632771164198]
19: [unknown location] g_closure_invoke
20: [unknown location] [unknown:140632750596630]
21: [unknown location] g_signal_emit_valist
22: [unknown location] g_signal_emit
23: [unknown location] gtk_widget_activate
24: [unknown location] gtk_menu_shell_activate_item
25: [unknown location] [unknown:140632754538356]
26: [unknown location] [unknown:140632752982692]
27: [unknown location] [unknown:140632750519881]
28: [unknown location] g_signal_emit_valist
29: [unknown location] g_signal_emit
30: [unknown location] [unknown:140632755796692]
31: [unknown location] [unknown:140632754449870]
32: [unknown location] gtk_main_do_event
33: [unknown location] [unknown:140632760939125]
34: [unknown location] [unknown:140632761250402]
35: [unknown location] g_main_context_dispatch
36: [unknown location] [unknown:140632740716200]
37: [unknown location] g_main_context_iteration
38: [unknown location] gtk_main_iteration
39: [unknown location] wxWindow::DoPopupMenu(wxMenu*, int, int)
40: [unknown location] wxWindowBase::PopupMenu(wxMenu*, int, int)
41: [unknown location] slade::ArchivePanel::onEntryListRightClick(wxDataViewEvent&)
42: [unknown location] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
43: [unknown location] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
44: [unknown location] wxEvtHandler::TryHereOnly(wxEvent&)
45: [unknown location] wxEvtHandler::ProcessEventLocally(wxEvent&)
46: [unknown location] wxEvtHandler::ProcessEvent(wxEvent&)
47: [unknown location] wxEvtHandler::SafelyProcessEvent(wxEvent&)
48: [unknown location] [unknown:140632771445502]
49: [unknown location] [unknown:140632752982455]
50: [unknown location] g_closure_invoke
51: [unknown location] [unknown:140632750596630]
52: [unknown location] g_signal_emit_valist
53: [unknown location] g_signal_emit
54: [unknown location] [unknown:140632755796692]
55: [unknown location] [unknown:140632754449870]
56: [unknown location] gtk_main_do_event
57: [unknown location] [unknown:140632760939125]
58: [unknown location] [unknown:140632761250402]
59: [unknown location] g_main_context_dispatch
60: [unknown location] [unknown:140632740716200]
61: [unknown location] g_main_loop_run
62: [unknown location] gtk_main
63: [unknown location] wxGUIEventLoop::DoRun()
64: [unknown location] wxEventLoopBase::Run()
65: [unknown location] wxAppConsoleBase::MainLoop()
66: [unknown location] wxEntry(int&, wchar_t**)
67: [unknown location] main
68: [unknown location] [unknown:140632746426762]
69: [unknown location] __libc_start_main
70: [unknown location] _start

Last Log Messages:
Opening directory /home/nicole/Nextcloud/projects/hgachex as archive
MAPINFO (Hexen/Old ZDoom) parsing not yet implemented
Opening took 278 ms
Initialising OpenGL...
OpenGL Version: 4.6
Max Texture Size: 16384x16384
Checking extensions...
Vertex Buffer Objects supported
Point Sprites supported
Framebuffer Objects supported

Switched back to Gentoo after some time away and ran into the same issue. Texture I'm trying to export is SHTGA0 from chex3.wad, so the file itself likely isn't the problem, but apart from that, I'm stumped.

origintopleft avatar May 14 '23 20:05 origintopleft

I can't reproduce this one in windows or ubuntu, could it possibly be a bug in the gentoo libpng/freeimage packages?

sirjuddington avatar Jun 05 '23 02:06 sirjuddington

I can't actually reproduce it any more. @origintopleft ?

chewi avatar Jun 07 '23 12:06 chewi

Nope, still have problems. Though, I'm just now noticing, I'm taking a slightly different set of actions; I'm selecting Graphic > Convert To... and then within that dialog I'm selecting PNG (Truecolor). I might have a separate issue.

origintopleft avatar Jun 08 '23 01:06 origintopleft

I can't reproduce it that way either. Is your Gentoo system up to date? I think I did a general update within the last 3 weeks.

chewi avatar Jun 08 '23 08:06 chewi