Bug 478449 - Kdiff crashes if exit via menu or hotkey
Summary: Kdiff crashes if exit via menu or hotkey
Status: RESOLVED FIXED
Alias: None
Product: kdiff3
Classification: Applications
Component: application (show other bugs)
Version: 1.10.5
Platform: Kubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: michael
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-12-12 20:01 UTC by qazerr
Modified: 2024-01-15 22:12 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description qazerr 2023-12-12 20:01:15 UTC
SUMMARY
Kdiff started to crash if exit via menu or hotkey, but it exits fine if I just close window.


STEPS TO REPRODUCE
1. start kdiff3
2. exit via menu or ctrl+q
3. crash

OBSERVED RESULT
SIGSEGV crash

EXPECTED RESULT
no crash

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: Kubuntu 23.10
(available in About System)
KDE Plasma Version: 5.27.8
KDE Frameworks Version:  5.110.0
Qt Version:  5.15.10

ADDITIONAL INFORMATION

(gdb) bt
#0  0x00007ffff58bd367 in _XSend (dpy=dpy@entry=0x55555571f8a0, data=data@entry=0x0, size=size@entry=0) at ../../src/xcb_io.c:548
#1  0x00007ffff58bd5b8 in return_socket (closure=0x55555571f8a0) at ../../src/xcb_io.c:57
#2  0x00007ffff4addb86 in get_socket_back (c=0x555555721cd0) at ../../src/xcb_out.c:100
#3  get_socket_back (c=c@entry=0x555555721cd0) at ../../src/xcb_out.c:91
#4  0x00007ffff4ae5606 in prepare_socket_request (c=0x555555721cd0) at ../../src/xcb_out.c:130
#5  send_fds (num_fds=0, fds=0x0, c=0x555555721cd0) at ../../src/xcb_out.c:200
#6  xcb_send_request_with_fds64 (c=0x555555721cd0, flags=1, vector=0x7fffffffd290, req=0x7ffff4af30d0 <xcb_req>, num_fds=num_fds@entry=0, fds=fds@entry=0x0) at ../../src/xcb_out.c:320
#7  0x00007ffff4ae5c3f in xcb_send_request64 (c=<optimized out>, flags=<optimized out>, vector=<optimized out>, req=<optimized out>) at ../../src/xcb_out.c:353
#8  0x00007ffff4ae5c4d in xcb_send_request (c=<optimized out>, flags=<optimized out>, vector=<optimized out>, req=<optimized out>) at ../../src/xcb_out.c:359
#9  0x00007ffff4aee998 in xcb_query_extension (c=<optimized out>, name_len=<optimized out>, name=<optimized out>) at /build/libxcb-aDbKs7/libxcb-1.15/build/src/xproto.c:12277
#10 0x00007ffff4ae51b0 in get_lazyreply (c=c@entry=0x555555721cd0, ext=ext@entry=0x7ffff7fa5040 <xcb_shm_id>) at ../../src/xcb_ext.c:79
#11 0x00007ffff4ae529e in xcb_get_extension_data (c=c@entry=0x555555721cd0, ext=0x7ffff7fa5040 <xcb_shm_id>) at ../../src/xcb_ext.c:95
#12 0x00007ffff4ae54c7 in xcb_send_request_with_fds64 (c=0x555555721cd0, flags=flags@entry=1, vector=vector@entry=0x7fffffffd440, req=req@entry=0x7ffff7fa4d50 <xcb_req>,
num_fds=num_fds@entry=0, fds=fds@entry=0x0) at ../../src/xcb_out.c:252
#13 0x00007ffff4ae5c3f in xcb_send_request64 (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffd440, req=req@entry=0x7ffff7fa4d50 <xcb_req>) at ../../src/xcb_out.c:353
#14 0x00007ffff4ae5c4d in xcb_send_request (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffd440, req=req@entry=0x7ffff7fa4d50 <xcb_req>) at ../../src/xcb_out.c:359
#15 0x00007ffff7fa2437 in xcb_shm_detach_checked (c=<optimized out>, shmseg=<optimized out>) at /build/libxcb-aDbKs7/libxcb-1.15/build/src/shm.c:179
#16 0x00007ffff14ecb50 in QXcbBackingStoreImage::destroyShmSegment (this=this@entry=0x5555561cb760) at qxcbbackingstore.cpp:449
#17 0x00007ffff14ed628 in QXcbBackingStoreImage::destroy (this=this@entry=0x5555561cb760, destroyShm=destroyShm@entry=true) at qxcbbackingstore.cpp:282
#18 0x00007ffff14ef4f1 in QXcbBackingStoreImage::~QXcbBackingStoreImage (this=0x5555561cb760, __in_chrg=<optimized out>) at qxcbbackingstore.cpp:82
#19 QXcbBackingStore::~QXcbBackingStore (this=0x555556050570, __in_chrg=<optimized out>) at qxcbbackingstore.cpp:786
#20 0x00007ffff14ef5ed in QXcbBackingStore::~QXcbBackingStore (this=0x555556050570, __in_chrg=<optimized out>) at qxcbbackingstore.cpp:787
#21 0x00007ffff6d16f7f in QBackingStore::~QBackingStore (this=0x5555560503e0, __in_chrg=<optimized out>) at painting/qbackingstore.cpp:110
#22 0x00007ffff7394543 in deleteBackingStore (d=0x55555584a9b0) at kernel/qwidget.cpp:1676
#23 QWidgetPrivate::deleteTLSysExtra (this=0x55555584a9b0) at kernel/qwidget.cpp:1687
#24 QWidgetPrivate::deleteTLSysExtra (this=0x55555584a9b0) at kernel/qwidget.cpp:1680
#25 0x00007ffff73a2f50 in QWidget::destroy (this=this@entry=0x555555a46270, destroyWindow=destroyWindow@entry=true, destroySubWindows=destroySubWindows@entry=true)
at kernel/qwidget.cpp:12166
#26 0x00007ffff73aa422 in QWidget::~QWidget (this=0x555555a46270, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1529
#27 0x000055555564cc09 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x555555a46260) at /usr/include/c++/12/bits/shared_ptr_base.h:346
#28 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x555555a46260) at /usr/include/c++/12/bits/shared_ptr_base.h:317
#29 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=<optimized out>, this=<optimized out>) at /usr/include/c++/12/bits/shared_ptr_base.h:1071
#30 std::__shared_ptr<ProgressDialog, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=<optimized out>, this=<optimized out>) at /usr/include/c++/12/bits/shared_ptr_base.h:1524
#31 std::shared_ptr<ProgressDialog>::~shared_ptr (this=<optimized out>, this=<optimized out>) at /usr/include/c++/12/bits/shared_ptr.h:175
#32 0x00007ffff5c45126 in __run_exit_handlers (status=1, listp=0x7ffff5dfe860 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
at ./stdlib/exit.c:111
--Type <RET> for more, q to quit, c to continue without paging--
#33 0x00007ffff5c45260 in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:141
#34 0x00007ffff5c280d7 in __libc_start_call_main (main=main@entry=0x5555555ae170 <main(int, char**)>, argc=argc@entry=1, argv=argv@entry=0x7fffffffd858)
at ../sysdeps/nptl/libc_start_call_main.h:74
#35 0x00007ffff5c28189 in __libc_start_main_impl (main=0x5555555ae170 <main(int, char**)>, argc=1, argv=0x7fffffffd858, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd848) at ../csu/libc-start.c:360
#36 0x00005555555b3495 in _start ()
Comment 1 Karsten Düsterloh 2024-01-15 20:01:01 UTC
I can confirm this on Lubuntu 23.10 with kdiff3 1.10.5 (64 bit).
Crash on ^Q and File→Quit, no crash on frame "X".
Comment 2 michael 2024-01-15 22:12:29 UTC
Please upgrade to 1.10.7 if you experiencing this issue. Previous version have multiple undefined behavior issues on exit do to the possiable presence of short lived helper threads.