Bug#970520: wesnoth: Crash on starting wesnoth - stack smash detected

Bernhard Übelacker bernhardu at mailbox.org
Fri Oct 2 16:05:54 BST 2020


Dear Maintainer,
I could reproduce this stack smashing inside a testing amd64 VM.

The stack canary gets overwritten in the stack below.

It looks like there is a disagreement of wesnoth and wolfssl in
the size of sha/hasher wc_Sha/WOLFSSL_SHA_CTX, the first allocates
112 bytes, the latter thinks it got a pointer to 128 bytes.

Because wesnoth got built against libwolfssl-dev 4.4.0+dfsg-2,
and this error manifests when run with libwolfssl24 4.5.0+dfsg-3,
I am still unsure if this might be a ABI break.

At least when installing 4.4.0+dfsg-2 in function wc_InitSha_ex
sizeof(*sha) shows also 112. And the game starts up.

@Felix Lechner: Hope it is ok to add you in CC?

Kind regards,
Bernhard


(rr) bt
#0  InitSha (sha=0x7f745aaf12a0) at wolfcrypt/src/sha.c:349
#1  wc_InitSha_ex (sha=sha at entry=0x7f745aaf12a0, heap=heap at entry=0x0, devId=devId at entry=-2) at wolfcrypt/src/sha.c:497
#2  0x00007f7471e89bdc in wc_InitSha (sha=sha at entry=0x7f745aaf12a0) at wolfcrypt/src/sha.c:775
#3  0x00007f7471f1a2c9 in wolfSSL_SHA_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15788
#4  0x00007f7471f1a325 in wolfSSL_SHA1_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15832
#5  0x0000559c7d624553 in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at ./src/hash.cpp:130
#6  0x0000559c7d1d2404 in game_config::config_cache::read_cache (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, file_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at /usr/include/c++/9/bits/basic_string.h:1936
#7  0x0000559c7d1d347c in game_config::config_cache::load_configs (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, config_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at ./src/config_cache.cpp:293
#8  0x0000559c7cefaa9e in game_config_manager::load_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/basic_string.h:320
#9  0x0000559c7cf11be2 in std::function<void ()>::operator()() const (this=0x7f745aaf1cb0) at /usr/include/c++/9/bits/std_function.h:683
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) (f=...) at ./src/gui/dialogs/loading_screen.cpp:226
#11 0x0000559c7cef6e5e in game_config_manager::load_game_config_with_loadscreen (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/std_function.h:87
#12 0x0000559c7cef799e in game_config_manager::init_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD) at ./src/game_config_manager.cpp:90
#13 0x0000559c7cebcef4 in <lambda()>::operator() (__closure=0x7ffed2e85258, __closure=0x7ffed2e85258) at ./src/wesnoth.cpp:701
#14 std::_Function_handler<void(), do_gameloop(const std::vector<std::__cxx11::basic_string<char> >&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/9/bits/std_function.h:300
#15 0x0000559c7cf108aa in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/9/bits/std_function.h:683
#16 gui2::dialogs::loading_screen::<lambda()>::operator() (__closure=0x559c7f41f338) at ./src/gui/dialogs/loading_screen.cpp:116
#17 boost::detail::thread_data<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> >::run(void) (this=0x559c7f41f200) at /usr/include/boost/thread/detail/thread.hpp:120
#18 0x00007f7471e1bec7 in ?? () from /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
#19 0x00007f74717c5ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007f74716f5eaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

(rr) print sizeof(*sha)
$2 = 128
(rr) print sha
$5 = (wc_Sha *) 0x7f745aaf12a0
(rr) ptype /o sha
type = struct wc_Sha {
/*    0      |     4 */    word32 buffLen;
/*    4      |     4 */    word32 loLen;
/*    8      |     4 */    word32 hiLen;
/*   12      |    64 */    word32 buffer[16];
/*   76      |    20 */    word32 digest[5];
/*   96      |     8 */    void *heap;
/*  104      |     4 */    int devId;
/* XXX  4-byte hole  */
/*  112      |     8 */    void *devCtx;
/*  120      |     4 */    word32 flags;
/* XXX  4-byte padding  */

                           /* total size (bytes):  128 */
                         } *
https://sources.debian.org/src/wolfssl/4.5.0+dfsg-4/wolfssl/openssl/sha.h/#L40


(rr) print sizeof(hasher)
$3 = 112
(rr) print &hasher
$4 = (SHA_CTX *) 0x7f745aaf12a0
(rr) ptype /o hasher
type = struct WOLFSSL_SHA_CTX {
/*    0      |   112 */    void *holder[14];

                           /* total size (bytes):  112 */
                         }
https://sources.debian.org/src/wesnoth-1.14/1:1.14.13-1/src/hash.cpp/#L130
-------------- next part --------------

# Bullseye/testing amd64 qemu VM 2020-10-02


apt update
apt dist-upgrade


apt install systemd-coredump mc sddm plasma-desktop sshfs gdb libcapnp-dev konsole tmux wesnoth wesnoth-1.14-core-dbgsym libwolfssl24-dbgsym


reboot


VM:
    echo 1 > /proc/sys/kernel/perf_event_paranoid
    mkdir -p /home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64
    sshfs -o allow_other,uid=1000,gid=1000 bernhard at 192.168.178.25:/home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64 /home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64


wesnoth
/home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64/obj/bin/rr wesnoth

journalctl -e
coredumpctl list
coredumpctl gdb 2291

set width 0
set pagination off
bt

/home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64/obj/bin/rr replay /home/benutzer/.local/share/rr/wesnoth-0

set width 0
set pagination off
display/i $pc
cont
bt





root at debian:~# coredumpctl list
TIME                            PID   UID   GID SIG COREFILE  EXE
Fri 2020-10-02 16:09:04 CEST   2291  1000  1000   6 present   /usr/games/wesnoth-1.14




benutzer at debian:~$ wesnoth
Battle for Wesnoth v1.14.13
Started on Fri Oct  2 16:09:00 2020


Data directory:               /usr/share/games/wesnoth/1.14
User configuration directory: /home/USER/.config/wesnoth-1.14
User data directory:          /home/USER/.config/wesnoth-1.14
Cache directory:              /home/USER/.config/wesnoth-1.14/cache

Setting mode to 1280x720
*** stack smashing detected ***: terminated
Abgebrochen (Speicherabzug geschrieben)




benutzer at debian:~$ /home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64/obj/bin/rr wesnoth
rr: Saving execution to trace directory `/home/benutzer/.local/share/rr/wesnoth-0'.
Battle for Wesnoth v1.14.13
Started on Fri Oct  2 16:13:33 2020


Data directory:               /usr/share/games/wesnoth/1.14
User configuration directory: /home/USER/.config/wesnoth-1.14
User data directory:          /home/USER/.config/wesnoth-1.14
Cache directory:              /home/USER/.config/wesnoth-1.14/cache

shared memfd open() failed: Function not implemented
shared memfd open() failed: Function not implemented
Setting mode to 1280x720
*** stack smashing detected ***: terminated
Abgebrochen




root at debian:~# coredumpctl gdb 2291
           PID: 2291 (wesnoth)
           UID: 1000 (benutzer)
           GID: 1000 (benutzer)
        Signal: 6 (ABRT)
     Timestamp: Fri 2020-10-02 16:09:01 CEST (6min ago)
  Command Line: wesnoth
    Executable: /usr/games/wesnoth-1.14
 Control Group: /user.slice/user-1000.slice/session-5.scope
          Unit: session-5.scope
         Slice: user-1000.slice
       Session: 5
     Owner UID: 1000 (benutzer)
       Boot ID: cc49beb4c4c8408681e5f77439c0db3a
    Machine ID: 33f18f39d2a9438eb75b0ed52848afcd
      Hostname: debian
       Storage: /var/lib/systemd/coredump/core.wesnoth.1000.cc49beb4c4c8408681e5f77439c0db3a.2291.1601647741000000.zst
       Message: Process 2291 (wesnoth) of user 1000 dumped core.
                
                Stack trace of thread 2303:
                #0  0x00007fa5d1b6cdb1 __GI_raise (libc.so.6 + 0x3bdb1)
                #1  0x00007fa5d1b56537 __GI_abort (libc.so.6 + 0x25537)
                #2  0x00007fa5d1baf828 __libc_message (libc.so.6 + 0x7e828)
                #3  0x00007fa5d1c3e712 __GI___fortify_fail (libc.so.6 + 0x10d712)
                #4  0x00007fa5d1c3e6f0 __stack_chk_fail (libc.so.6 + 0x10d6f0)
                #5  0x000055a5b714a58d n/a (wesnoth-1.14 + 0xb7358d)
                #6  0x000055a5b6cf8404 n/a (wesnoth-1.14 + 0x721404)
                #7  0x000055a5b6cf947c n/a (wesnoth-1.14 + 0x72247c)
                #8  0x000055a5b6a20a9e n/a (wesnoth-1.14 + 0x449a9e)
                #9  0x000055a5b6a37be2 n/a (wesnoth-1.14 + 0x460be2)
                #10 0x000055a5b6a1ce5e n/a (wesnoth-1.14 + 0x445e5e)
                #11 0x000055a5b6a1d99e n/a (wesnoth-1.14 + 0x44699e)
                #12 0x000055a5b69e2ef4 n/a (wesnoth-1.14 + 0x40bef4)
                #13 0x000055a5b6a368aa n/a (wesnoth-1.14 + 0x45f8aa)
                #14 0x00007fa5d2354ec7 n/a (libboost_thread.so.1.71.0 + 0x10ec7)
                #15 0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #16 0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2294:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13f6fb n/a (swrast_dri.so + 0x69b6fb)
                #2  0x00007fa5cb13f097 n/a (swrast_dri.so + 0x69b097)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2292:
                #0  0x00007fa5d1d08388 futex_abstimed_wait_cancelable (libpthread.so.0 + 0x12388)
                #1  0x00007fa5d1d084b3 __new_sem_wait_slow (libpthread.so.0 + 0x124b3)
                #2  0x00007fa5d292f11f n/a (libSDL2-2.0.so.0 + 0xfa11f)
                #3  0x00007fa5d28baae6 n/a (libSDL2-2.0.so.0 + 0x85ae6)
                #4  0x00007fa5d28ba3ac n/a (libSDL2-2.0.so.0 + 0x853ac)
                #5  0x00007fa5d292ed49 n/a (libSDL2-2.0.so.0 + 0xf9d49)
                #6  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #7  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2302:
                #0  0x00007fa5d1c245b6 __ppoll (libc.so.6 + 0xf35b6)
                #1  0x00007fa5d1a00ec1 pa_mainloop_poll (libpulse.so.0 + 0x25ec1)
                #2  0x00007fa5d1a014bf pa_mainloop_iterate (libpulse.so.0 + 0x264bf)
                #3  0x00007fa5d2913717 n/a (libSDL2-2.0.so.0 + 0xde717)
                #4  0x00007fa5d285aaf6 n/a (libSDL2-2.0.so.0 + 0x25af6)
                #5  0x00007fa5d28ba3ac n/a (libSDL2-2.0.so.0 + 0x853ac)
                #6  0x00007fa5d292ed49 n/a (libSDL2-2.0.so.0 + 0xf9d49)
                #7  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #8  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2293:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13f6fb n/a (swrast_dri.so + 0x69b6fb)
                #2  0x00007fa5cb13f097 n/a (swrast_dri.so + 0x69b097)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2300:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13ccd3 n/a (swrast_dri.so + 0x698cd3)
                #2  0x00007fa5cb13cc67 n/a (swrast_dri.so + 0x698c67)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2296:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13f6fb n/a (swrast_dri.so + 0x69b6fb)
                #2  0x00007fa5cb13f097 n/a (swrast_dri.so + 0x69b097)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2299:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13ccd3 n/a (swrast_dri.so + 0x698cd3)
                #2  0x00007fa5cb13cc67 n/a (swrast_dri.so + 0x698c67)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2298:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13ccd3 n/a (swrast_dri.so + 0x698cd3)
                #2  0x00007fa5cb13cc67 n/a (swrast_dri.so + 0x698c67)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2297:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13ccd3 n/a (swrast_dri.so + 0x698cd3)
                #2  0x00007fa5cb13cc67 n/a (swrast_dri.so + 0x698c67)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2291:
                #0  0x00007fa5d1bf6d21 __GI___clock_nanosleep (libc.so.6 + 0xc5d21)
                #1  0x00007fa5d1bfc503 __GI___nanosleep (libc.so.6 + 0xcb503)
                #2  0x00007fa5d2934123 n/a (libSDL2-2.0.so.0 + 0xff123)
                #3  0x000055a5b7338497 n/a (wesnoth-1.14 + 0xd61497)
                #4  0x000055a5b6a3fde5 n/a (wesnoth-1.14 + 0x468de5)
                #5  0x000055a5b6a37c49 n/a (wesnoth-1.14 + 0x460c49)
                #6  0x000055a5b69a4420 main (wesnoth-1.14 + 0x3cd420)
                #7  0x00007fa5d1b57cca __libc_start_main (libc.so.6 + 0x26cca)
                #8  0x000055a5b69e2a9a n/a (wesnoth-1.14 + 0x40ba9a)
                
                Stack trace of thread 2295:
                #0  0x00007fa5d1d057b2 futex_wait_cancelable (libpthread.so.0 + 0xf7b2)
                #1  0x00007fa5cb13f6fb n/a (swrast_dri.so + 0x69b6fb)
                #2  0x00007fa5cb13f097 n/a (swrast_dri.so + 0x69b097)
                #3  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #4  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)
                
                Stack trace of thread 2301:
                #0  0x00007fa5d1c245b6 __ppoll (libc.so.6 + 0xf35b6)
                #1  0x00007fa5d1a00ec1 pa_mainloop_poll (libpulse.so.0 + 0x25ec1)
                #2  0x00007fa5d1a014bf pa_mainloop_iterate (libpulse.so.0 + 0x264bf)
                #3  0x00007fa5d1a01570 pa_mainloop_run (libpulse.so.0 + 0x26570)
                #4  0x00007fa5d2913a7f n/a (libSDL2-2.0.so.0 + 0xdea7f)
                #5  0x00007fa5d28ba3ac n/a (libSDL2-2.0.so.0 + 0x853ac)
                #6  0x00007fa5d292ed49 n/a (libSDL2-2.0.so.0 + 0xf9d49)
                #7  0x00007fa5d1cfeea7 start_thread (libpthread.so.0 + 0x8ea7)
                #8  0x00007fa5d1c2eeaf __clone (libc.so.6 + 0xfdeaf)

GNU gdb (Debian 9.2-1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/games/wesnoth-1.14...
(No debugging symbols found in /usr/games/wesnoth-1.14)
[New LWP 2303]
[New LWP 2294]
[New LWP 2292]
[New LWP 2302]
[New LWP 2293]
[New LWP 2300]
[New LWP 2296]
[New LWP 2299]
[New LWP 2298]
[New LWP 2297]
[New LWP 2291]
[New LWP 2295]
[New LWP 2301]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `wesnoth'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
[Current thread is 1 (Thread 0x7fa57b7fe700 (LWP 2303))]
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fa5d1b56537 in __GI_abort () at abort.c:79
#2  0x00007fa5d1baf828 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7fa5d1cbdc28 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
#3  0x00007fa5d1c3e712 in __GI___fortify_fail (msg=msg at entry=0x7fa5d1cbdc10 "stack smashing detected") at fortify_fail.c:26
#4  0x00007fa5d1c3e6f0 in __stack_chk_fail () at stack_chk_fail.c:24
#5  0x000055a5b714a58d in ?? ()
#6  0x000055a5b6cf8404 in ?? ()
#7  0x000055a5b6cf947c in ?? ()
#8  0x000055a5b6a20a9e in ?? ()
#9  0x000055a5b6a37be2 in ?? ()
#10 0x000055a5b6a1ce5e in ?? ()
#11 0x000055a5b6a1d99e in ?? ()
#12 0x000055a5b69e2ef4 in ?? ()
#13 0x000055a5b6a368aa in ?? ()
#14 0x00007fa5d2354ec7 in ?? () from /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
#15 0x00007fa5d1cfeea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#16 0x00007fa5d1c2eeaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95


# With symbols:

(gdb) bt
#0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fa5d1b56537 in __GI_abort () at abort.c:79
#2  0x00007fa5d1baf828 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7fa5d1cbdc28 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
#3  0x00007fa5d1c3e712 in __GI___fortify_fail (msg=msg at entry=0x7fa5d1cbdc10 "stack smashing detected") at fortify_fail.c:26
#4  0x00007fa5d1c3e6f0 in __stack_chk_fail () at stack_chk_fail.c:24
#5  0x000055a5b714a58d in utils::sha1::sha1 (this=0x7fa57b7f5530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at /usr/include/c++/9/array:234
#6  0x000055a5b6cf8404 in game_config::config_cache::read_cache (this=0x55a5b78fd360 <game_config::config_cache::instance()::cache>, file_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at /usr/include/c++/9/bits/basic_string.h:1936
#7  0x000055a5b6cf947c in game_config::config_cache::load_configs (this=0x55a5b78fd360 <game_config::config_cache::instance()::cache>, config_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at ./src/config_cache.cpp:293
#8  0x000055a5b6a20a9e in game_config_manager::load_game_config (this=0x7ffd9b38a190, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/basic_string.h:320
#9  0x000055a5b6a37be2 in std::function<void ()>::operator()() const (this=0x7fa57b7f5cb0) at /usr/include/c++/9/bits/std_function.h:683
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) (f=...) at ./src/gui/dialogs/loading_screen.cpp:226
#11 0x000055a5b6a1ce5e in game_config_manager::load_game_config_with_loadscreen (this=0x7ffd9b38a190, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/std_function.h:87
#12 0x000055a5b6a1d99e in game_config_manager::init_game_config (this=0x7ffd9b38a190, force_reload=game_config_manager::NO_FORCE_RELOAD) at ./src/game_config_manager.cpp:90
#13 0x000055a5b69e2ef4 in <lambda()>::operator() (__closure=0x7ffd9b389f78, __closure=0x7ffd9b389f78) at ./src/wesnoth.cpp:701
#14 std::_Function_handler<void(), do_gameloop(const std::vector<std::__cxx11::basic_string<char> >&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/9/bits/std_function.h:300
#15 0x000055a5b6a368aa in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/9/bits/std_function.h:683
#16 gui2::dialogs::loading_screen::<lambda()>::operator() (__closure=0x55a5b824fba8) at ./src/gui/dialogs/loading_screen.cpp:116
#17 boost::detail::thread_data<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> >::run(void) (this=0x55a5b824fa70) at /usr/include/boost/thread/detail/thread.hpp:120
#18 0x00007fa5d2354ec7 in ?? () from /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
#19 0x00007fa5d1cfeea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007fa5d1c2eeaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95












benutzer at debian:~$ /home/bernhard/data/entwicklung/2020/rr/2020-10-02-amd64/obj/bin/rr replay /home/benutzer/.local/share/rr/wesnoth-0
GNU gdb (Debian 9.2-1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/games/wesnoth-1.14...
Reading symbols from /usr/lib/debug/.build-id/c6/a0c29bed7e17d7652ec6b895222ac525df1cc8.debug...
Really redefine built-in command "restart"? (y or n) [answered Y; input not from terminal]
Remote debugging using 127.0.0.1:8519
Reading symbols from /lib64/ld-linux-x86-64.so.2...
Reading symbols from /usr/lib/debug/.build-id/63/7706dbbbd112d03fbad61ca30125b48e60aa92.debug...
0x00007f7472488090 in _start () from /lib64/ld-linux-x86-64.so.2
(rr) set width 0
(rr) set pagination off
(rr) display/i $pc
1: x/i $pc
=> 0x7f7472488090 <_start>:     mov    %rsp,%rdi
(rr) cont
Continuing.
Battle for Wesnoth v1.14.13
Started on Fri Oct  2 16:13:33 2020


Data directory:               /usr/share/games/wesnoth/1.14
User configuration directory: /home/USER/.config/wesnoth-1.14
User data directory:          /home/USER/.config/wesnoth-1.14
Cache directory:              /home/USER/.config/wesnoth-1.14/cache

shared memfd open() failed: Function not implemented
shared memfd open() failed: Function not implemented
Setting mode to 1280x720
*** stack smashing detected ***: terminated
[New Thread 8081.8087]
[New Thread 8081.8083]
[New Thread 8081.8084]
[New Thread 8081.8085]

Thread 2 received signal SIGABRT, Aborted.
[Switching to Thread 8081.8087]
__GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f7471633db1 <__GI_raise+321>:     mov    0x108(%rsp),%rax
(rr) bt
#0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f747161d537 in __GI_abort () at abort.c:79
#2  0x00007f7471676828 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f7471784c28 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
#3  0x00007f7471705712 in __GI___fortify_fail (msg=msg at entry=0x7f7471784c10 "stack smashing detected") at fortify_fail.c:26
#4  0x00007f74717056f0 in __stack_chk_fail () at stack_chk_fail.c:24
#5  0x0000559c7d62458d in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at /usr/include/c++/9/array:234
#6  0x0000559c7d1d2404 in game_config::config_cache::read_cache (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, file_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at /usr/include/c++/9/bits/basic_string.h:1936
#7  0x0000559c7d1d347c in game_config::config_cache::load_configs (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, config_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at ./src/config_cache.cpp:293
#8  0x0000559c7cefaa9e in game_config_manager::load_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/basic_string.h:320
#9  0x0000559c7cf11be2 in std::function<void ()>::operator()() const (this=0x7f745aaf1cb0) at /usr/include/c++/9/bits/std_function.h:683
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) (f=...) at ./src/gui/dialogs/loading_screen.cpp:226
#11 0x0000559c7cef6e5e in game_config_manager::load_game_config_with_loadscreen (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/std_function.h:87
#12 0x0000559c7cef799e in game_config_manager::init_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD) at ./src/game_config_manager.cpp:90
#13 0x0000559c7cebcef4 in <lambda()>::operator() (__closure=0x7ffed2e85258, __closure=0x7ffed2e85258) at ./src/wesnoth.cpp:701
#14 std::_Function_handler<void(), do_gameloop(const std::vector<std::__cxx11::basic_string<char> >&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/9/bits/std_function.h:300
#15 0x0000559c7cf108aa in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/9/bits/std_function.h:683
#16 gui2::dialogs::loading_screen::<lambda()>::operator() (__closure=0x559c7f41f338) at ./src/gui/dialogs/loading_screen.cpp:116
#17 boost::detail::thread_data<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> >::run(void) (this=0x559c7f41f200) at /usr/include/boost/thread/detail/thread.hpp:120
#18 0x00007f7471e1bec7 in ?? () from /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
#19 0x00007f74717c5ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007f74716f5eaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(rr) reverse-finish
Run back to call of #0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50

Thread 2 received signal SIGABRT, Aborted.
__GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      in ../sysdeps/unix/sysv/linux/raise.c
1: x/i $pc
=> 0x7f7471633db1 <__GI_raise+321>:     mov    0x108(%rsp),%rax
(rr) 
Run back to call of #0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
0x00007f747161d532 in __GI_abort () at abort.c:79
79      abort.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f747161d532 <__GI_abort+286>:     callq  0x7f7471633c70 <__GI_raise>
(rr) 
Run back to call of #0  0x00007f747161d532 in __GI_abort () at abort.c:79
__libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f7471784c28 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
155     ../sysdeps/posix/libc_fatal.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f7471676823 <__libc_message+595>: callq  0x7f747161d414 <__GI_abort>
(rr) 
Run back to call of #0  __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f7471784c28 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
0x00007f747170570d in __GI___fortify_fail (msg=msg at entry=0x7f7471784c10 "stack smashing detected") at fortify_fail.c:26
26      fortify_fail.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f747170570d <__GI___fortify_fail+29>:     callq  0x7f74716765d0 <__libc_message>
(rr) 
Run back to call of #0  0x00007f747170570d in __GI___fortify_fail (msg=msg at entry=0x7f7471784c10 "stack smashing detected") at fortify_fail.c:26
0x00007f74717056eb in __stack_chk_fail () at stack_chk_fail.c:24
24      stack_chk_fail.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f74717056eb <__stack_chk_fail+11>:        callq  0x7f74717056f0 <__GI___fortify_fail>
(rr) 
Run back to call of #0  0x00007f74717056eb in __stack_chk_fail () at stack_chk_fail.c:24
0x0000559c7d624588 in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at /usr/include/c++/9/array:234
234     /usr/include/c++/9/array: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x559c7d624588 <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+104>:      callq  0x559c7cd9c5a0 <__stack_chk_fail at plt>
(rr) reverse-nexti
0x0000559c7d62457d      234     in /usr/include/c++/9/array
1: x/i $pc
=> 0x559c7d62457d <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+93>:       jne    0x559c7d624588 <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+104>
(rr) 
0x0000559c7d624574      234     in /usr/include/c++/9/array
1: x/i $pc
=> 0x559c7d624574 <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+84>:       xor    %fs:0x28,%rax
(rr) 
0x0000559c7d62456f      234     in /usr/include/c++/9/array
1: x/i $pc
=> 0x559c7d62456f <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+79>:       mov    0x78(%rsp),%rax
(rr) print/x $rsp
$1 = 0x7f745aaf12a0
(rr) watch * (0x7f745aaf12a0 + 0x78)
Hardware watchpoint 1: * (0x7f745aaf12a0 + 0x78)
(rr) reverse-cont
Continuing.

Thread 2 hit Hardware watchpoint 1: * (0x7f745aaf12a0 + 0x78)

Old value = 0
New value = -435188992
InitSha (sha=0x7f745aaf12a0) at wolfcrypt/src/sha.c:349
349     wolfcrypt/src/sha.c: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x7f7471e8961f <wc_InitSha_ex+63>:   movl   $0x0,0x78(%rdi)
(rr) bt
#0  InitSha (sha=0x7f745aaf12a0) at wolfcrypt/src/sha.c:349
#1  wc_InitSha_ex (sha=sha at entry=0x7f745aaf12a0, heap=heap at entry=0x0, devId=devId at entry=-2) at wolfcrypt/src/sha.c:497
#2  0x00007f7471e89bdc in wc_InitSha (sha=sha at entry=0x7f745aaf12a0) at wolfcrypt/src/sha.c:775
#3  0x00007f7471f1a2c9 in wolfSSL_SHA_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15788
#4  0x00007f7471f1a325 in wolfSSL_SHA1_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15832
#5  0x0000559c7d624553 in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at ./src/hash.cpp:130
#6  0x0000559c7d1d2404 in game_config::config_cache::read_cache (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, file_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at /usr/include/c++/9/bits/basic_string.h:1936
#7  0x0000559c7d1d347c in game_config::config_cache::load_configs (this=0x559c7ddd7360 <game_config::config_cache::instance()::cache>, config_path="/usr/share/games/wesnoth/1.14/data/cores.cfg", cfg=...) at ./src/config_cache.cpp:293
#8  0x0000559c7cefaa9e in game_config_manager::load_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/basic_string.h:320
#9  0x0000559c7cf11be2 in std::function<void ()>::operator()() const (this=0x7f745aaf1cb0) at /usr/include/c++/9/bits/std_function.h:683
#10 gui2::dialogs::loading_screen::display(std::function<void ()>) (f=...) at ./src/gui/dialogs/loading_screen.cpp:226
#11 0x0000559c7cef6e5e in game_config_manager::load_game_config_with_loadscreen (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD, classification=0x0) at /usr/include/c++/9/bits/std_function.h:87
#12 0x0000559c7cef799e in game_config_manager::init_game_config (this=0x7ffed2e85470, force_reload=game_config_manager::NO_FORCE_RELOAD) at ./src/game_config_manager.cpp:90
#13 0x0000559c7cebcef4 in <lambda()>::operator() (__closure=0x7ffed2e85258, __closure=0x7ffed2e85258) at ./src/wesnoth.cpp:701
#14 std::_Function_handler<void(), do_gameloop(const std::vector<std::__cxx11::basic_string<char> >&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/9/bits/std_function.h:300
#15 0x0000559c7cf108aa in std::function<void ()>::operator()() const (this=<optimized out>) at /usr/include/c++/9/bits/std_function.h:683
#16 gui2::dialogs::loading_screen::<lambda()>::operator() (__closure=0x559c7f41f338) at ./src/gui/dialogs/loading_screen.cpp:116
#17 boost::detail::thread_data<gui2::dialogs::loading_screen::pre_show(gui2::window&)::<lambda()> >::run(void) (this=0x559c7f41f200) at /usr/include/boost/thread/detail/thread.hpp:120
#18 0x00007f7471e1bec7 in ?? () from /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
#19 0x00007f74717c5ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007f74716f5eaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(rr) print sizeof(*sha)
$2 = 128
(rr) print sha
$5 = (wc_Sha *) 0x7f745aaf12a0
(rr) ptype /o sha
type = struct wc_Sha {
/*    0      |     4 */    word32 buffLen;
/*    4      |     4 */    word32 loLen;
/*    8      |     4 */    word32 hiLen;
/*   12      |    64 */    word32 buffer[16];
/*   76      |    20 */    word32 digest[5];
/*   96      |     8 */    void *heap;
/*  104      |     4 */    int devId;
/* XXX  4-byte hole  */
/*  112      |     8 */    void *devCtx;
/*  120      |     4 */    word32 flags;
/* XXX  4-byte padding  */

                           /* total size (bytes):  128 */
                         } *




(rr) up
#1  wc_InitSha_ex (sha=sha at entry=0x7f745aaf12a0, heap=heap at entry=0x0, devId=devId at entry=-2) at wolfcrypt/src/sha.c:497
497     in wolfcrypt/src/sha.c
(rr) 
#2  0x00007f7471e89bdc in wc_InitSha (sha=sha at entry=0x7f745aaf12a0) at wolfcrypt/src/sha.c:775
775     in wolfcrypt/src/sha.c
(rr) 
#3  0x00007f7471f1a2c9 in wolfSSL_SHA_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15788
15788   src/ssl.c: Datei oder Verzeichnis nicht gefunden.
(rr) 
#4  0x00007f7471f1a325 in wolfSSL_SHA1_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15832
15832   in src/ssl.c
(rr) 
#5  0x0000559c7d624553 in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at ./src/hash.cpp:130
130     ./src/hash.cpp: Datei oder Verzeichnis nicht gefunden.
(rr) print sizeof(hasher)
$3 = 112
(rr) print &hasher
$4 = (SHA_CTX *) 0x7f745aaf12a0
(rr) ptype /o hasher
type = struct WOLFSSL_SHA_CTX {
/*    0      |   112 */    void *holder[14];

                           /* total size (bytes):  112 */
                         }



(rr) down
#4  0x00007f7471f1a325 in wolfSSL_SHA1_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15832
15832   src/ssl.c: Datei oder Verzeichnis nicht gefunden.
(rr) 
#3  0x00007f7471f1a2c9 in wolfSSL_SHA_Init (sha=sha at entry=0x7f745aaf12a0) at src/ssl.c:15788
15788   in src/ssl.c
(rr) 
#2  0x00007f7471e89bdc in wc_InitSha (sha=sha at entry=0x7f745aaf12a0) at wolfcrypt/src/sha.c:775
775     wolfcrypt/src/sha.c: Datei oder Verzeichnis nicht gefunden.
(rr) 
#1  wc_InitSha_ex (sha=sha at entry=0x7f745aaf12a0, heap=heap at entry=0x0, devId=devId at entry=-2) at wolfcrypt/src/sha.c:497
497     in wolfcrypt/src/sha.c
(rr) 
#0  InitSha (sha=0x7f745aaf12a0) at wolfcrypt/src/sha.c:349
349     in wolfcrypt/src/sha.c
(rr) reverse-cont
Continuing.

Thread 2 hit Hardware watchpoint 1: * (0x7f745aaf12a0 + 0x78)

Old value = -435188992
New value = 2111665008
0x0000559c7d624537 in utils::sha1::sha1 (this=0x7f745aaf1530, str="/usr/share/games/wesnoth/1.14/data/cores.cfg TITLE_SCREEN WESNOTH_VERSION") at ./src/hash.cpp:126
126     ./src/hash.cpp: Datei oder Verzeichnis nicht gefunden.
1: x/i $pc
=> 0x559c7d624537 <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+23>:       mov    %rax,0x78(%rsp)
(rr) reverse-nexti
0x0000559c7d62452e      126     in ./src/hash.cpp
1: x/i $pc
=> 0x559c7d62452e <utils::sha1::sha1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+14>:       mov    %fs:0x28,%rax








https://buildd.debian.org/status/fetch.php?pkg=wesnoth-1.14&arch=amd64&ver=1%3A1.14.13-1&stamp=1592429180&raw=0

Get:333 https://deb.debian.org/debian unstable/main amd64 libwolfssl24 amd64 4.4.0+dfsg-2 [608 kB]
Get:334 https://deb.debian.org/debian unstable/main amd64 libwolfssl-dev amd64 4.4.0+dfsg-2 [2853 kB]



root at debian:~# dpkg -l | grep -i wolf
ii  libwolfssl24:amd64                            4.5.0+dfsg-3                   amd64        wolfSSL encryption library
ii  libwolfssl24-dbgsym:amd64                     4.5.0+dfsg-3                   amd64        debug symbols for libwolfssl24






https://sources.debian.org/src/wolfssl/4.5.0+dfsg-4/wolfssl/openssl/sha.h/#L40
https://sources.debian.org/src/wesnoth-1.14/1:1.14.13-1/src/hash.cpp/#L130




https://snapshot.debian.org/archive/debian/20200512T204242Z/pool/main/w/wolfssl/libwolfssl24_4.4.0%2Bdfsg-2_amd64.deb
https://snapshot.debian.org/archive/debian-debug/20200512T203632Z/pool/main/w/wolfssl/libwolfssl24-dbgsym_4.4.0%2Bdfsg-2_amd64.deb




More information about the Pkg-games-devel mailing list