Control: tags 918696 + upstream patch

Hello Bill Allombert, dear Maintainer,

I tried to have a look at this crash and could
reproduce it inside a Buster amd64 qemu VM.

See below a backtrace of the crash with debug symbols installed.

Running with valgrind revealed accesses to uninitialized memory.
When this memory gets initialized to zero the crash does not
happen any longer.

Some more information in attached file and one more unrelated
valgrind output showing an invalid read below TkpOpenDisplay.

Find the added initializations in the patch attached.

Kind regards,
Bernhard


(gdb) bt
#0  0x000055be75810e10 in Engine::UpdatePV (sm=0x7ffe87a2a1a0, 
this=0x55be77c71170) at src/engine.h:297
#1  Engine::Search (this=this@entry=0x55be77c71170, depth=depth@entry=1, 
alpha=680, alpha@entry=860, beta=beta@entry=861, 
tryNullMove=tryNullMove@entry=true) at src/engine.cpp:1628
#2  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=1, alpha=alpha@entry=-861, beta=beta@entry=-860, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#3  0x000055be75810aa8 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=2, alpha=alpha@entry=860, beta=beta@entry=861, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1772
#4  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=2, alpha=alpha@entry=-861, beta=beta@entry=-860, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#5  0x000055be75810aa8 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=3, alpha=860, alpha@entry=31997, beta=beta@entry=31998, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1772
#6  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=3, alpha=alpha@entry=-31998, beta=beta@entry=-31997, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#7  0x000055be75812138 in Engine::SearchRoot (this=this@entry=0x55be77c71170, 
depth=depth@entry=4, alpha=31997, alpha@entry=31962, beta=beta@entry=32032, 
mlist=mlist@entry=0x7ffe87a32710) at src/engine.cpp:1531
#8  0x000055be75812ec3 in Engine::Think (this=<optimized out>, 
mlist=0x7ffe87a32710) at src/engine.cpp:1449
#9  0x000055be757dd38a in sc_pos_bestSquare (ti=0x55be760ba000, argv=<optimized 
out>, argc=<optimized out>, cd=<optimized out>) at src/tkscid.cpp:6056
#10 0x000055be757e4f49 in sc_pos_bestSquare (argv=0x55be77aa2420, argc=3, 
ti=0x55be760ba000, cd=0x0) at /usr/include/c++/6/bits/stl_algo.h:1887
#11 sc_pos (cd=0x0, ti=0x55be760ba000, argc=3, argv=0x55be77aa2420) at 
src/tkscid.cpp:5725
#12 0x00007f1833d161bb in TclInvokeStringCommand (clientData=0x55be760f9fe0, 
interp=0x55be760ba000, objc=3, objv=0x55be77aa2400) at ./generic/tclBasic.c:2479
#13 0x00007f1833d17f87 in TclNRRunCallbacks 
(interp=interp@entry=0x55be760ba000, result=0, rootPtr=0x0) at 
./generic/tclBasic.c:4461
#14 0x00007f1833d1798f in Tcl_EvalObjv (interp=interp@entry=0x55be760ba000, 
objc=objc@entry=2, objv=objv@entry=0x55be77aa2160, flags=flags@entry=2097168) 
at ./generic/tclBasic.c:4189
#15 0x00007f1833d1937f in TclEvalEx (interp=0x55be760ba000, 
script=0x7ffe87a36f30 "enterSquare 52", numBytes=<optimized out>, 
flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, 
outerScript=0x7ffe87a36f30 "enterSquare 52") at ./generic/tclBasic.c:5330
#16 0x00007f1833d18ce3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized 
out>, numBytes=<optimized out>, flags=<optimized out>) at 
./generic/tclBasic.c:4995
#17 0x00007f1832cf57bd in Tk_BindEvent (bindPtr=<optimized out>, 
eventPtr=eventPtr@entry=0x7ffe87a370c0, tkwin=0x55be77914e30, 
numObjects=<optimized out>, objectPtr=<optimized out>, 
objectPtr@entry=0x55be77c613a0) at ./unix/../generic/tkBind.c:1518
#18 0x00007f1832d47fd8 in CanvasDoEvent 
(canvasPtr=canvasPtr@entry=0x55be76593340, 
eventPtr=eventPtr@entry=0x7ffe87a370c0) at ./unix/../generic/tkCanvas.c:5228
#19 0x00007f1832d479f9 in PickCurrentItem 
(canvasPtr=canvasPtr@entry=0x55be76593340, 
eventPtr=eventPtr@entry=0x55be77952130) at ./unix/../generic/tkCanvas.c:5046
#20 0x00007f1832d47674 in CanvasBindProc (clientData=0x55be76593340, 
eventPtr=0x55be77952130) at ./unix/../generic/tkCanvas.c:4824
#21 0x00007f1832d04b1f in Tk_HandleEvent 
(eventPtr=eventPtr@entry=0x55be77952130) at ./unix/../generic/tkEvent.c:1352
#22 0x00007f1832d05360 in WindowEventProc (flags=<optimized out>, 
evPtr=0x55be77952130) at ./unix/../generic/tkEvent.c:1764
#23 WindowEventProc (evPtr=evPtr@entry=0x55be77952120, flags=flags@entry=-3) at 
./unix/../generic/tkEvent.c:1735
#24 0x00007f1833ddff2f in Tcl_ServiceEvent (flags=flags@entry=-3) at 
./generic/tclNotify.c:670
#25 0x00007f1833de0195 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903
#26 0x00007f1832d057c2 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148
#27 0x00007f1833dda151 in Tcl_MainEx (argc=<optimized out>, argv=<optimized 
out>, appInitProc=0x55be757e7de0 <UI_impl::initTclTk(Tcl_Interp*)>, 
interp=0x55be760ba000) at ./generic/tclMain.c:607
#28 0x000055be757e97fd in UI_impl::Main (argc=2, argv=0x7ffe87a37a18, 
exit=<optimized out>) at src/ui_tcltk.h:60
#29 0x00007f18335f509b in __libc_start_main (main=0x55be75771490 <main(int, 
char**)>, argc=2, argv=0x7ffe87a37a18, init=<optimized out>, fini=<optimized 
out>, rtld_fini=<optimized out>, stack_end=0x7ffe87a37a08) at 
../csu/libc-start.c:308
#30 0x000055be75775369 in _start ()
From d1c2edae061775f2e4e410ff9ee62cdeb2c1536f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <[email protected]>
Date: Tue, 8 Jan 2019 18:09:02 +0100
Subject: [PATCH] Avoid crash because of unintialized memory access.

Debian-Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918696
---
 src/engine.cpp | 2 ++
 src/engine.h   | 1 +
 2 files changed, 3 insertions(+)

diff --git a/src/engine.cpp b/src/engine.cpp
index be8c1c7..8cdeb5c 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -1091,6 +1091,7 @@ Engine::SetHashTableKilobytes (uint size)
       if (TranTable != NULL) { delete[] TranTable; }
       TranTable = new transTableEntryT [TranTableSize];
 #endif
+      memset(TranTable, 0, sizeof(*TranTable)*TranTableSize);
     }
     ClearHashTable();
 }
@@ -1113,6 +1114,7 @@ Engine::SetPawnTableKilobytes (uint size)
       if (PawnTable != NULL) { delete[] PawnTable; }
       PawnTable = new pawnTableEntryT [PawnTableSize];
 #endif
+      memset(PawnTable, 0, sizeof(*PawnTable)*PawnTableSize);
     }
     ClearPawnTable();
 }
diff --git a/src/engine.h b/src/engine.h
index c6b437d..2877331 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -315,6 +315,7 @@ Engine::UpdatePV (simpleMoveT * sm)
 inline void
 Engine::ClearKillerMoves (void)
 {
+    memset(KillerMove, 0, sizeof(KillerMove));
     for (uint i=0; i < ENGINE_MAX_PLY; i++) {
         KillerMove[i][0].from = NULL_SQUARE;
         KillerMove[i][1].from = NULL_SQUARE;
-- 
2.20.1

# Buster amd64 qemu VM

apt update
apt dist-upgrade

apt install systemd-coredump xserver-xorg lightdm openbox tmux gdb valgrind 
scid scid-dbgsym libtcl8.6-dbgsym libtk8.6-dbgsym libx11-6-dbgsym
apt install devscripts dpkg-dev
apt build-dep scid


mkdir source/scid/orig -p
cd    source/scid/orig
apt source scid
cd



mkdir source/libx11-6/orig -p
cd    source/libx11-6/orig
apt source libx11-6
mkdir libx11-1.6.7/1/2/3/4 -p
cd



systemctl start lightdm


export DISPLAY=:0
scid


# Copy text to clipboard: 8/k1K1N3/8/8/8/3B4/8/8 w - - 2 2

Edit - Paste Start Board


$ scid
Speicherzugriffsfehler (Speicherabzug geschrieben)


dmesg:
[  315.207856] tkscid[13252]: segfault at 55be77c8d000 ip 000055be75810e10 sp 
00007ffe87a2a140 error 4 in tkscid[55be75766000+e5000]
[  315.207867] Code: 0c 07 41 8b 81 6c 68 00 00 39 c2 73 48 4d 69 da 84 02 00 
00 66 0f 1f 44 00 00 89 d0 83 c2 01 48 c1 e0 04 4a 8d 0c 18 4c 01 c0 <49> 8b b4 
07 70 68 00 00 49 8b bc 07 78 68 00 00 49 89 b4 0f 70 68


root@debian:~# coredumpctl list
TIME                            PID   UID   GID SIG COREFILE  EXE
Tue 2019-01-08 15:54:20 CET   13252  1000  1000  11 present   /usr/games/tkscid


root@debian:~# coredumpctl gdb 13252
           PID: 13252 (tkscid)
           UID: 1000 (benutzer)
           GID: 1000 (benutzer)
        Signal: 11 (SEGV)
     Timestamp: Tue 2019-01-08 15:54:20 CET (2min 15s ago)
  Command Line: /usr/games/tkscid /usr/games/scid
    Executable: /usr/games/tkscid
 Control Group: /user.slice/user-1000.slice/session-3.scope
          Unit: session-3.scope
         Slice: user-1000.slice
       Session: 3
     Owner UID: 1000 (benutzer)
       Boot ID: 08e0a90b65454158bd833e68c550e10b
    Machine ID: 32f43b50ac8c4b21941bc0b02f8e7811
      Hostname: debian
       Storage: 
/var/lib/systemd/coredump/core.tkscid.1000.08e0a90b65454158bd833e68c550e10b.13252.1546959260000000.lz4
       Message: Process 13252 (tkscid) of user 1000 dumped core.
                
                Stack trace of thread 13252:
                #0  0x000055be75810e10 n/a (tkscid)
                #1  0x000055be75810798 n/a (tkscid)
                #2  0x000055be75810aa8 n/a (tkscid)
                #3  0x000055be75810798 n/a (tkscid)
                #4  0x000055be75810aa8 n/a (tkscid)
                #5  0x000055be75810798 n/a (tkscid)
                #6  0x000055be75812138 n/a (tkscid)
                #7  0x000055be75812ec3 n/a (tkscid)
                #8  0x000055be757dd38a n/a (tkscid)
                #9  0x000055be757e4f49 n/a (tkscid)
                #10 0x00007f1833d161bb TclInvokeStringCommand (libtcl8.6.so)
                #11 0x00007f1833d17f87 TclNRRunCallbacks (libtcl8.6.so)
                #12 0x00007f1833d1937f n/a (libtcl8.6.so)
                #13 0x00007f1833d18ce3 Tcl_EvalEx (libtcl8.6.so)
                #14 0x00007f1832cf57bd Tk_BindEvent (libtk8.6.so)
                #15 0x00007f1832d47fd8 n/a (libtk8.6.so)
                #16 0x00007f1832d479f9 n/a (libtk8.6.so)
                #17 0x00007f1832d47674 n/a (libtk8.6.so)
                #18 0x00007f1832d04b1f Tk_HandleEvent (libtk8.6.so)
                #19 0x00007f1832d05360 n/a (libtk8.6.so)
                #20 0x00007f1833ddff2f Tcl_ServiceEvent (libtcl8.6.so)
                #21 0x00007f1833de0195 Tcl_DoOneEvent (libtcl8.6.so)
                #22 0x00007f1832d057c2 Tk_MainLoop (libtk8.6.so)
                #23 0x00007f1833dda151 Tcl_MainEx (libtcl8.6.so)
                #24 0x000055be757e97fd n/a (tkscid)
                #25 0x00007f18335f509b __libc_start_main (libc.so.6)
                #26 0x000055be75775369 n/a (tkscid)
                
                Stack trace of thread 13258:
                #0  0x00007f18336c23f7 __select (libc.so.6)
                #1  0x00007f1833e23b8a n/a (libtcl8.6.so)
                #2  0x00007f1833799fa3 start_thread (libpthread.so.0)
                #3  0x00007f18336ca88f __clone (libc.so.6)

...
Core was generated by `/usr/games/tkscid /usr/games/scid'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055be75810e10 in ?? ()
[Current thread is 1 (Thread 0x7f18335aed00 (LWP 13252))]
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0  0x000055be75810e10 in ?? ()
#1  0x000055be75810798 in ?? ()
#2  0x000055be75810aa8 in ?? ()
#3  0x000055be75810798 in ?? ()
#4  0x000055be75810aa8 in ?? ()
#5  0x000055be75810798 in ?? ()
#6  0x000055be75812138 in ?? ()
#7  0x000055be75812ec3 in ?? ()
#8  0x000055be757dd38a in ?? ()
#9  0x000055be757e4f49 in ?? ()
#10 0x00007f1833d161bb in TclInvokeStringCommand () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#11 0x00007f1833d17f87 in TclNRRunCallbacks () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#12 0x00007f1833d1937f in ?? () from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
#13 0x00007f1833d18ce3 in Tcl_EvalEx () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#14 0x00007f1832cf57bd in Tk_BindEvent () from 
/usr/lib/x86_64-linux-gnu/libtk8.6.so
#15 0x00007f1832d47fd8 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so
#16 0x00007f1832d479f9 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so
#17 0x00007f1832d47674 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so
#18 0x00007f1832d04b1f in Tk_HandleEvent () from 
/usr/lib/x86_64-linux-gnu/libtk8.6.so
#19 0x00007f1832d05360 in ?? () from /usr/lib/x86_64-linux-gnu/libtk8.6.so
#20 0x00007f1833ddff2f in Tcl_ServiceEvent () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#21 0x00007f1833de0195 in Tcl_DoOneEvent () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#22 0x00007f1832d057c2 in Tk_MainLoop () from 
/usr/lib/x86_64-linux-gnu/libtk8.6.so
#23 0x00007f1833dda151 in Tcl_MainEx () from 
/usr/lib/x86_64-linux-gnu/libtcl8.6.so
#24 0x000055be757e97fd in ?? ()
#25 0x00007f18335f509b in __libc_start_main (main=0x55be75771490, argc=2, 
argv=0x7ffe87a37a18, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, stack_end=0x7ffe87a37a08) at ../csu/libc-start.c:308
#26 0x000055be75775369 in ?? ()



# With debug symbols:

(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0  0x000055be75810e10 in Engine::UpdatePV (sm=0x7ffe87a2a1a0, 
this=0x55be77c71170) at src/engine.h:297
#1  Engine::Search (this=this@entry=0x55be77c71170, depth=depth@entry=1, 
alpha=680, alpha@entry=860, beta=beta@entry=861, 
tryNullMove=tryNullMove@entry=true) at src/engine.cpp:1628
#2  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=1, alpha=alpha@entry=-861, beta=beta@entry=-860, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#3  0x000055be75810aa8 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=2, alpha=alpha@entry=860, beta=beta@entry=861, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1772
#4  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=2, alpha=alpha@entry=-861, beta=beta@entry=-860, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#5  0x000055be75810aa8 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=3, alpha=860, alpha@entry=31997, beta=beta@entry=31998, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1772
#6  0x000055be75810798 in Engine::Search (this=this@entry=0x55be77c71170, 
depth=depth@entry=3, alpha=alpha@entry=-31998, beta=beta@entry=-31997, 
tryNullMove=<optimized out>, tryNullMove@entry=true) at src/engine.cpp:1770
#7  0x000055be75812138 in Engine::SearchRoot (this=this@entry=0x55be77c71170, 
depth=depth@entry=4, alpha=31997, alpha@entry=31962, beta=beta@entry=32032, 
mlist=mlist@entry=0x7ffe87a32710) at src/engine.cpp:1531
#8  0x000055be75812ec3 in Engine::Think (this=<optimized out>, 
mlist=0x7ffe87a32710) at src/engine.cpp:1449
#9  0x000055be757dd38a in sc_pos_bestSquare (ti=0x55be760ba000, argv=<optimized 
out>, argc=<optimized out>, cd=<optimized out>) at src/tkscid.cpp:6056
#10 0x000055be757e4f49 in sc_pos_bestSquare (argv=0x55be77aa2420, argc=3, 
ti=0x55be760ba000, cd=0x0) at /usr/include/c++/6/bits/stl_algo.h:1887
#11 sc_pos (cd=0x0, ti=0x55be760ba000, argc=3, argv=0x55be77aa2420) at 
src/tkscid.cpp:5725
#12 0x00007f1833d161bb in TclInvokeStringCommand (clientData=0x55be760f9fe0, 
interp=0x55be760ba000, objc=3, objv=0x55be77aa2400) at ./generic/tclBasic.c:2479
#13 0x00007f1833d17f87 in TclNRRunCallbacks 
(interp=interp@entry=0x55be760ba000, result=0, rootPtr=0x0) at 
./generic/tclBasic.c:4461
#14 0x00007f1833d1798f in Tcl_EvalObjv (interp=interp@entry=0x55be760ba000, 
objc=objc@entry=2, objv=objv@entry=0x55be77aa2160, flags=flags@entry=2097168) 
at ./generic/tclBasic.c:4189
#15 0x00007f1833d1937f in TclEvalEx (interp=0x55be760ba000, 
script=0x7ffe87a36f30 "enterSquare 52", numBytes=<optimized out>, 
flags=<optimized out>, line=line@entry=1, clNextOuter=clNextOuter@entry=0x0, 
outerScript=0x7ffe87a36f30 "enterSquare 52") at ./generic/tclBasic.c:5330
#16 0x00007f1833d18ce3 in Tcl_EvalEx (interp=<optimized out>, script=<optimized 
out>, numBytes=<optimized out>, flags=<optimized out>) at 
./generic/tclBasic.c:4995
#17 0x00007f1832cf57bd in Tk_BindEvent (bindPtr=<optimized out>, 
eventPtr=eventPtr@entry=0x7ffe87a370c0, tkwin=0x55be77914e30, 
numObjects=<optimized out>, objectPtr=<optimized out>, 
objectPtr@entry=0x55be77c613a0) at ./unix/../generic/tkBind.c:1518
#18 0x00007f1832d47fd8 in CanvasDoEvent 
(canvasPtr=canvasPtr@entry=0x55be76593340, 
eventPtr=eventPtr@entry=0x7ffe87a370c0) at ./unix/../generic/tkCanvas.c:5228
#19 0x00007f1832d479f9 in PickCurrentItem 
(canvasPtr=canvasPtr@entry=0x55be76593340, 
eventPtr=eventPtr@entry=0x55be77952130) at ./unix/../generic/tkCanvas.c:5046
#20 0x00007f1832d47674 in CanvasBindProc (clientData=0x55be76593340, 
eventPtr=0x55be77952130) at ./unix/../generic/tkCanvas.c:4824
#21 0x00007f1832d04b1f in Tk_HandleEvent 
(eventPtr=eventPtr@entry=0x55be77952130) at ./unix/../generic/tkEvent.c:1352
#22 0x00007f1832d05360 in WindowEventProc (flags=<optimized out>, 
evPtr=0x55be77952130) at ./unix/../generic/tkEvent.c:1764
#23 WindowEventProc (evPtr=evPtr@entry=0x55be77952120, flags=flags@entry=-3) at 
./unix/../generic/tkEvent.c:1735
#24 0x00007f1833ddff2f in Tcl_ServiceEvent (flags=flags@entry=-3) at 
./generic/tclNotify.c:670
#25 0x00007f1833de0195 in Tcl_DoOneEvent (flags=-3) at ./generic/tclNotify.c:903
#26 0x00007f1832d057c2 in Tk_MainLoop () at ./unix/../generic/tkEvent.c:2148
#27 0x00007f1833dda151 in Tcl_MainEx (argc=<optimized out>, argv=<optimized 
out>, appInitProc=0x55be757e7de0 <UI_impl::initTclTk(Tcl_Interp*)>, 
interp=0x55be760ba000) at ./generic/tclMain.c:607
#28 0x000055be757e97fd in UI_impl::Main (argc=2, argv=0x7ffe87a37a18, 
exit=<optimized out>) at src/ui_tcltk.h:60
#29 0x00007f18335f509b in __libc_start_main (main=0x55be75771490 <main(int, 
char**)>, argc=2, argv=0x7ffe87a37a18, init=<optimized out>, fini=<optimized 
out>, rtld_fini=<optimized out>, stack_end=0x7ffe87a37a08) at 
../csu/libc-start.c:308
#30 0x000055be75775369 in _start ()


(gdb) disassemble $pc-0x60,$pc+0x10
Dump of assembler code from 0x55be75810db0 to 0x55be75810e20:
   0x000055be75810db0 <Engine::Search(int, int, int, bool)+3424>:       (bad)  
   0x000055be75810db1 <Engine::Search(int, int, int, bool)+3425>:       incl   
0x42(%rbp,%rcx,4)
   0x000055be75810db5 <Engine::Search(int, int, int, bool)+3429>:       add    
%eax,-0x77(%rcx)
   0x000055be75810db8 <Engine::Search(int, int, int, bool)+3432>:       rorb   
%cl,-0x75(%rax)
   0x000055be75810dbb <Engine::Search(int, int, int, bool)+3435>:       rex.WR 
and $0x60,%al
   0x000055be75810dbe <Engine::Search(int, int, int, bool)+3438>:       imul   
$0x294,%r10,%rax
   0x000055be75810dc5 <Engine::Search(int, int, int, bool)+3445>:       mov    
0x68(%rsp),%rbx
   0x000055be75810dca <Engine::Search(int, int, int, bool)+3450>:       mov    
%r8,%rdx
   0x000055be75810dcd <Engine::Search(int, int, int, bool)+3453>:       imul   
$0x284,%r8,%r8
   0x000055be75810dd4 <Engine::Search(int, int, int, bool)+3460>:       mov    
%rcx,0x6870(%r15,%rax,1)
   0x000055be75810ddc <Engine::Search(int, int, int, bool)+3468>:       mov    
%rbx,0x6878(%r15,%rax,1)
   0x000055be75810de4 <Engine::Search(int, int, int, bool)+3476>:       lea    
(%r15,%r8,1),%r9
   0x000055be75810de8 <Engine::Search(int, int, int, bool)+3480>:       mov    
0x686c(%r9),%eax
   0x000055be75810def <Engine::Search(int, int, int, bool)+3487>:       cmp    
%eax,%edx
   0x000055be75810df1 <Engine::Search(int, int, int, bool)+3489>:       jae    
0x55be75810e3b <Engine::Search(int, int, int, bool)+3563>
   0x000055be75810df3 <Engine::Search(int, int, int, bool)+3491>:       imul   
$0x284,%r10,%r11
   0x000055be75810dfa <Engine::Search(int, int, int, bool)+3498>:       nopw   
0x0(%rax,%rax,1)
   0x000055be75810e00 <Engine::Search(int, int, int, bool)+3504>:       mov    
%edx,%eax
   0x000055be75810e02 <Engine::Search(int, int, int, bool)+3506>:       add    
$0x1,%edx
   0x000055be75810e05 <Engine::Search(int, int, int, bool)+3509>:       shl    
$0x4,%rax
   0x000055be75810e09 <Engine::Search(int, int, int, bool)+3513>:       lea    
(%rax,%r11,1),%rcx
   0x000055be75810e0d <Engine::Search(int, int, int, bool)+3517>:       add    
%r8,%rax
=> 0x000055be75810e10 <Engine::Search(int, int, int, bool)+3520>:       mov    
0x6870(%r15,%rax,1),%rsi
   0x000055be75810e18 <Engine::Search(int, int, int, bool)+3528>:       mov    
0x6878(%r15,%rax,1),%rdi
End of assembler dump.

(gdb) print/x $rax
$1 = 0x1561c
(gdb) print/x $r15
$2 = 0x55be77c71170       -> this?
(gdb) print/x $rsi
$3 = 0x0
(gdb) print/x $r8
$4 = 0x119c


(gdb) list engine.h:283,300
283
284     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~
285     // Engine::UpdatePV
286     //   Updates the principal variation at the current Ply to
287     //   include the specified move.
288     inline void
289     Engine::UpdatePV (simpleMoveT * sm)
290     {
291         if (Ply >= ENGINE_MAX_PLY - 1) { return; }
292         if (InNullMove > 0) { return; }
293         // if (! Pos.IsLegalMove (sm)) { return; }
294
295         PV[Ply].move[Ply] = *sm;
296         for (uint j = Ply + 1; j < PV[Ply + 1].length; j++) {
297             PV[Ply].move[j] = PV[Ply+1].move[j];
298         }
299         PV[Ply].length = PV[Ply+1].length;
300     }

(gdb) print Ply
$5 = 6
(gdb) print j
$6 = 5193
(gdb) print/x j
$7 = 0x1449
(gdb) print PV[Ply + 1].length
$8 = 4283979864
(gdb) print/x PV[Ply + 1].length
$9 = 0xff585858
(gdb) print/x PV[0].length
$10 = 0x3
(gdb) print/x PV[1].length
$11 = 0x1
(gdb) print/x PV[2].length
$12 = 0x6
(gdb) print/x PV[3].length
$13 = 0x3
(gdb) print/x PV[4].length
$14 = 0x6
(gdb) print/x PV[5].length
$15 = 0x5
(gdb) print/x PV[6].length
$16 = 0x6
(gdb) print/x PV[7].length
$17 = 0xff585858






set width 0
set pagination off
directory /home/benutzer/source/scid/orig/scid-4.6.4+dfsg1






#valgrind --trace-children=yes scid
#valgrind --vgdb=yes --vgdb-error=0 /usr/games/tkscid /usr/games/scid
valgrind --vgdb=yes --vgdb-error=0 --track-origins=yes /usr/games/tkscid 
/usr/games/scid
gdb -q \
    -ex 'set width 0' \
    -ex 'set pagination off' \
    -ex 'directory /home/benutzer/source/libx11-6/orig/libx11-1.6.7/1/2/3/4' \
    -ex 'directory /home/benutzer/source/libx11-6/orig/libx11-1.6.7/1/2/3' \
    -ex 'directory /home/benutzer/source/scid/orig/scid-4.6.4+dfsg1' \
    -ex 'target remote | vgdb' \
    -ex 'cont' \
    /usr/games/tkscid



benutzer@debian:~$ valgrind --vgdb=yes --vgdb-error=0 /usr/games/tkscid 
/usr/games/scid
==26514== Memcheck, a memory error detector
==26514== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==26514== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==26514== Command: /usr/games/tkscid /usr/games/scid
==26514== 
==26514== (action at startup) vgdb me ... 
==26514== 
==26514== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==26514==   /path/to/gdb /usr/games/tkscid
==26514== and then give GDB the following command
==26514==   target remote | /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb 
--pid=26514
==26514== --pid is optional if only one valgrind process is running
==26514== 
==26514== Invalid read of size 1
==26514==    at 0x4839D03: strcmp (vg_replace_strmem.c:848)
==26514==    by 0x6121ECE: _XimUnRegisterIMInstantiateCallback (imInsClbk.c:238)
==26514==    by 0x61093E0: XUnregisterIMInstantiateCallback (IMWrap.c:200)
==26514==    by 0x6121D8D: _XimRegisterIMInstantiateCallback (imInsClbk.c:209)
==26514==    by 0x610935A: XRegisterIMInstantiateCallback (IMWrap.c:177)
==26514==    by 0x5D30B1B: TkpOpenDisplay (tkUnixEvent.c:184)
==26514==    by 0x5C99D11: GetScreen (tkWindow.c:465)
==26514==    by 0x5C99B7F: CreateTopLevelWindow (tkWindow.c:348)
==26514==    by 0x5C9A54B: TkCreateMainWindow (tkWindow.c:854)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:582)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:474)
==26514==    by 0x5CA4927: TkListCreateFrame (tkFrame.c:468)
==26514==    by 0x5C9C9BC: Initialize (tkWindow.c:3254)
==26514==  Address 0x58d7400 is 0 bytes inside a block of size 1 free'd
==26514==    at 0x48369AB: free (vg_replace_malloc.c:530)
==26514==    by 0x61183BC: XSetLocaleModifiers (lcWrap.c:89)
==26514==    by 0x5D31266: OpenIM (tkUnixEvent.c:725)
==26514==    by 0x5D311EB: InstantiateIMCallback (tkUnixEvent.c:680)
==26514==    by 0x6121D8D: _XimRegisterIMInstantiateCallback (imInsClbk.c:209)
==26514==    by 0x610935A: XRegisterIMInstantiateCallback (IMWrap.c:177)
==26514==    by 0x5D30B1B: TkpOpenDisplay (tkUnixEvent.c:184)
==26514==    by 0x5C99D11: GetScreen (tkWindow.c:465)
==26514==    by 0x5C99B7F: CreateTopLevelWindow (tkWindow.c:348)
==26514==    by 0x5C9A54B: TkCreateMainWindow (tkWindow.c:854)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:582)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:474)
==26514==    by 0x5CA4927: TkListCreateFrame (tkFrame.c:468)
==26514==  Block was alloc'd at
==26514==    at 0x483577F: malloc (vg_replace_malloc.c:299)
==26514==    by 0x6117FB4: _XlcDefaultMapModifiers (lcWrap.c:146)
==26514==    by 0x61183A5: XSetLocaleModifiers (lcWrap.c:87)
==26514==    by 0x5D31266: OpenIM (tkUnixEvent.c:725)
==26514==    by 0x5D30B03: TkpOpenDisplay (tkUnixEvent.c:183)
==26514==    by 0x5C99D11: GetScreen (tkWindow.c:465)
==26514==    by 0x5C99B7F: CreateTopLevelWindow (tkWindow.c:348)
==26514==    by 0x5C9A54B: TkCreateMainWindow (tkWindow.c:854)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:582)
==26514==    by 0x5CA4F2D: CreateFrame (tkFrame.c:474)
==26514==    by 0x5CA4927: TkListCreateFrame (tkFrame.c:468)
==26514==    by 0x5C9C9BC: Initialize (tkWindow.c:3254)
==26514==    by 0x4951F38: Tcl_LoadObjCmd (tclLoad.c:464)
==26514== 
==26514== (action on error) vgdb me ... 


benutzer@debian:~$ gdb -q -ex 'set width 0' -ex 'set pagination off' -ex 
'target remote | vgdb' -ex 'cont' /usr/games/tkscid
Reading symbols from /usr/games/tkscid...Reading symbols from 
/usr/lib/debug/.build-id/b7/f74f5bf2959827772fafc05999c01740e78baa.debug...done.
done.
Remote debugging using | vgdb
relaying data between gdb and process 26514
warning: remote target does not support file transfer, attempting to access 
files from local filesystem.
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from 
/usr/lib/debug/.build-id/dd/8026f43793facd0aa3924fb2dd6b0033b7b431.debug...done.
done.
0x0000000004001090 in _start () from /lib64/ld-linux-x86-64.so.2
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
_vgr20160ZU_libcZdsoZa_strcmp (s1=0x72b9210 "", s2=0x58d7400 "") at 
../shared/vg_replace_strmem.c:848
848     ../shared/vg_replace_strmem.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  _vgr20160ZU_libcZdsoZa_strcmp (s1=0x72b9210 "", s2=0x58d7400 "") at 
../shared/vg_replace_strmem.c:848
#1  0x0000000006121ecf in _XimUnRegisterIMInstantiateCallback (lcd=0x58b4aa0, 
display=0x58a26b0, rdb=0x0, res_name=0x0, res_class=0x0, callback=0x5d311e0 
<InstantiateIMCallback>, client_data=0x587fe60 "\260&\212\005") at 
../../../../modules/im/ximcp/imInsClbk.c:235
#2  0x00000000061093e1 in XUnregisterIMInstantiateCallback (display=0x58a26b0, 
rdb=0x0, res_name=0x0, res_class=0x0, callback=0x5d311e0 
<InstantiateIMCallback>, client_data=0x587fe60 "\260&\212\005") at 
../../../src/xlibi18n/IMWrap.c:200
#3  0x0000000006121d8e in _XimRegisterIMInstantiateCallback (lcd=<optimized 
out>, display=0x58a26b0, rdb=0x0, res_name=<optimized out>, res_class=0x0, 
callback=0x5d311e0 <InstantiateIMCallback>, client_data=0x587fe60 
"\260&\212\005") at ../../../../modules/im/ximcp/imInsClbk.c:209
#4  0x000000000610935b in XRegisterIMInstantiateCallback (display=0x58a26b0, 
rdb=rdb@entry=0x0, res_name=res_name@entry=0x0, res_class=res_class@entry=0x0, 
callback=callback@entry=0x5d311e0 <InstantiateIMCallback>, 
client_data=client_data@entry=0x587fe60 "\260&\212\005") at 
../../../src/xlibi18n/IMWrap.c:177
#5  0x0000000005d30b1c in TkpOpenDisplay 
(displayNameStr=displayNameStr@entry=0x581def0 ":0") at 
./unix/../unix/tkUnixEvent.c:184
#6  0x0000000005c99d12 in GetScreen (interp=interp@entry=0x568bd50, 
screenName=0x581def0 ":0", screenName@entry=0x5d50d77 "", 
screenPtr=screenPtr@entry=0x1ffefff074) at ./unix/../generic/tkWindow.c:465
#7  0x0000000005c99b80 in CreateTopLevelWindow (interp=interp@entry=0x568bd50, 
parent=parent@entry=0x0, name=name@entry=0x56d7370 "scid", 
screenName=screenName@entry=0x5d50d77 "", flags=flags@entry=0) at 
./unix/../generic/tkWindow.c:348
#8  0x0000000005c9a54c in TkCreateMainWindow (interp=interp@entry=0x568bd50, 
screenName=screenName@entry=0x5d50d77 "", baseName=baseName@entry=0x56d7370 
"scid") at ./unix/../generic/tkWindow.c:854
#9  0x0000000005ca4f2e in CreateFrame (clientData=<optimized out>, 
appName=0x56d7370 "scid", type=TYPE_TOPLEVEL, objv=0x56b5ca0, objc=4, 
interp=0x568bd50) at ./unix/../generic/tkFrame.c:582
#10 CreateFrame (clientData=<optimized out>, interp=0x568bd50, objc=4, 
objv=0x56b5ca0, type=TYPE_TOPLEVEL, appName=0x56d7370 "scid") at 
./unix/../generic/tkFrame.c:474
#11 0x0000000005ca4928 in TkListCreateFrame (clientData=clientData@entry=0x0, 
interp=interp@entry=0x568bd50, listObj=listObj@entry=0x550c680, 
toplevel=toplevel@entry=1, nameObj=0x550c350) at ./unix/../generic/tkFrame.c:468
#12 0x0000000005c9c9bd in Initialize (interp=0x568bd50) at 
./unix/../generic/tkWindow.c:3254
#13 0x0000000004951f39 in Tcl_LoadObjCmd (dummy=<optimized out>, 
interp=<optimized out>, objc=<optimized out>, objv=<optimized out>) at 
./generic/tclLoad.c:464
#14 0x0000000004890f87 in TclNRRunCallbacks (interp=interp@entry=0x568bd50, 
result=0, rootPtr=0x0) at ./generic/tclBasic.c:4461
#15 0x000000000489098f in Tcl_EvalObjv (interp=interp@entry=0x568bd50, 
objc=objc@entry=4, objv=objv@entry=0x5690070, flags=flags@entry=2097168) at 
./generic/tclBasic.c:4189
#16 0x000000000489237f in TclEvalEx (interp=interp@entry=0x568bd50, 
script=0x56b9bd0 "#!/bin/sh\n\n# Scid (Shane's Chess Information 
Database)\n#\n# Copyright (C) 1999-2004 Shane Hudson\n# Copyright (C) 2006-2009 
Pascal Georges\n# Copyright (C) 2008-2011 Alexander Wagner\n# Copyright (C) 
2013"..., numBytes=<optimized out>, flags=flags@entry=0, line=37, line@entry=1, 
clNextOuter=clNextOuter@entry=0x0, outerScript=0x56b9bd0 "#!/bin/sh\n\n# Scid 
(Shane's Chess Information Database)\n#\n# Copyright (C) 1999-2004 Shane 
Hudson\n# Copyright (C) 2006-2009 Pascal Georges\n# Copyright (C) 2008-2011 
Alexander Wagner\n# Copyright (C) 2013"...) at ./generic/tclBasic.c:5330
#17 0x000000000494b348 in Tcl_FSEvalFileEx (encodingName=<optimized out>, 
pathPtr=0x550af70, interp=0x568bd50) at ./generic/tclIOUtil.c:1824
#18 Tcl_FSEvalFileEx (interp=interp@entry=0x568bd50, 
pathPtr=pathPtr@entry=0x550af70, encodingName=<optimized out>) at 
./generic/tclIOUtil.c:1724
#19 0x00000000049531a7 in Tcl_MainEx (argc=<optimized out>, argv=<optimized 
out>, appInitProc=0x189de0 <UI_impl::initTclTk(Tcl_Interp*)>, interp=0x568bd50) 
at ./generic/tclMain.c:420
#20 0x000000000018b7fd in UI_impl::Main (argc=2, argv=0x1fff0004d8, 
exit=<optimized out>) at src/ui_tcltk.h:60
#21 0x0000000004f7a09b in __libc_start_main (main=0x113490 <main(int, char**)>, 
argc=2, argv=0x1fff0004d8, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, stack_end=0x1fff0004c8) at ../csu/libc-start.c:308
#22 0x0000000000117369 in _start ()
(gdb) 
(gdb) up
#1  0x0000000006121ecf in _XimUnRegisterIMInstantiateCallback (lcd=0x58b4aa0, 
display=0x58a26b0, rdb=0x0, res_name=0x0, res_class=0x0, callback=0x5d311e0 
<InstantiateIMCallback>, client_data=0x587fe60 "\260&\212\005") at 
../../../../modules/im/ximcp/imInsClbk.c:235
(gdb) list 216,250
216     Bool
217     _XimUnRegisterIMInstantiateCallback(
218         XLCd         lcd,
219         Display     *display,
220         XrmDatabase  rdb,
221         char        *res_name,
222         char        *res_class,
223         XIDProc      callback,
224         XPointer     client_data)
225     {
226         char                locale[XIM_MAXLCNAMELEN];
227         XimInstCallback     icb, picb;
228
229         if( !callback_list )
230             return( False );
231
232         MakeLocale( lcd, locale );
233
234         for( icb = callback_list, picb = NULL; icb; picb = icb, icb = 
icb->next ) {
235             if( !strcmp( locale, icb->name )  &&
236                 (lcd->core->modifiers == icb->modifiers  ||         /* 
XXXXX */
237                  (lcd->core->modifiers  &&  icb->modifiers  &&
238                   !strcmp( lcd->core->modifiers, icb->modifiers )))  &&
239                 rdb == icb->rdb  &&                                 /* 
XXXXX */
240                 ((res_name == NULL  &&  icb->res_name == NULL)  ||
241                  (res_name != NULL  &&  icb->res_name != NULL  &&
242                   !strcmp( res_name, icb->res_name )))  &&
243                 ((res_class == NULL  &&  icb->res_class == NULL)  ||
244                  (res_class != NULL  &&  icb->res_class != NULL  &&
245                   !strcmp( res_class, icb->res_class )))  &&
246                 (callback == icb->callback)  &&
247                 (client_data  ==  icb->client_data)  &&             /* 
XXXXX */
248                 !icb->destroy ) {
249                 if( lock )
250                     icb->destroy = True;
(gdb) print lcd->core->modifiers
$7 = 0x72b9210 ""
(gdb) print icb->modifiers
$8 = 0x58d7400 ""

(gdb) list XSetLocaleModifiers
73
74      char *
75      XSetLocaleModifiers(
76          const char *modifiers)
77      {
78          XLCd lcd = _XlcCurrentLC();
79          char *user_mods;
80          char *mapped_mods;
81
82          if (!lcd)
83              return (char *) NULL;
84          if (!modifiers)
85              return lcd->core->modifiers;
86          user_mods = getenv("XMODIFIERS");
87          mapped_mods = (*lcd->methods->map_modifiers) (lcd, user_mods, 
modifiers);
88          if (mapped_mods) {
89              Xfree(lcd->core->modifiers);
90              lcd->core->modifiers = mapped_mods;
91          }
92          return mapped_mods;
93      }


--> Looks wrong but still unrelated ...


#########


benutzer@debian:~$ valgrind --vgdb=yes --vgdb-error=0 --track-origins=yes 
/usr/games/tkscid /usr/games/scid 
==26628== Memcheck, a memory error detector
==26628== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==26628== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==26628== Command: /usr/games/tkscid /usr/games/scid
==26628== 
==26628== (action at startup) vgdb me ... 
==26628== 
==26628== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==26628==   /path/to/gdb /usr/games/tkscid
==26628== and then give GDB the following command
==26628==   target remote | /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb 
--pid=26628
==26628== --pid is optional if only one valgrind process is running
==26628== 
==26628== Invalid read of size 1
...
==26628== 
==26628== (action on error) vgdb me ... 
==26628== Continuing ...
==26628== Conditional jump or move depends on uninitialised value(s)
==26628==    at 0x1AEA45: Engine::ScorePawnStructure(pawnTableEntryT*) 
(engine.cpp:741)
==26628==    by 0x1AED6F: Engine::Score(int, int) (engine.cpp:412)
==26628==    by 0x1B15D3: Engine::Quiesce(int, int) [clone .part.28] 
(engine.cpp:1890)
==26628==    by 0x1B4B92: Quiesce (engine.cpp:2323)
==26628==    by 0x1B4B92: Engine::Think(MoveList*) (engine.cpp:1407)
==26628==    by 0x17F389: sc_pos_bestSquare(void*, Tcl_Interp*, int, char 
const**) [clone .part.418] (tkscid.cpp:6056)
==26628==    by 0x186F48: sc_pos_bestSquare (stl_algo.h:1887)
==26628==    by 0x186F48: sc_pos(void*, Tcl_Interp*, int, char const**) 
(tkscid.cpp:5725)
==26628==    by 0x488F1BA: TclInvokeStringCommand (tclBasic.c:2479)
==26628==    by 0x4890F86: TclNRRunCallbacks (tclBasic.c:4461)
==26628==    by 0x489237E: TclEvalEx (tclBasic.c:5330)
==26628==    by 0x4891CE2: Tcl_EvalEx (tclBasic.c:4995)
==26628==    by 0x5C6C7BC: Tk_BindEvent (tkBind.c:1518)
==26628==    by 0x5CBEFD7: CanvasDoEvent (tkCanvas.c:5228)
==26628==  Uninitialised value was created by a heap allocation
==26628==    at 0x483650F: operator new[](unsigned long) 
(vg_replace_malloc.c:423)
==26628==    by 0x1B0315: Engine::SetPawnTableKilobytes(unsigned int) 
(engine.cpp:1114)
==26628==    by 0x17F2C2: Engine (engine.h:206)
==26628==    by 0x17F2C2: sc_pos_bestSquare(void*, Tcl_Interp*, int, char 
const**) [clone .part.418] (tkscid.cpp:6053)
==26628==    by 0x186F48: sc_pos_bestSquare (stl_algo.h:1887)
==26628==    by 0x186F48: sc_pos(void*, Tcl_Interp*, int, char const**) 
(tkscid.cpp:5725)
==26628==    by 0x488F1BA: TclInvokeStringCommand (tclBasic.c:2479)
==26628==    by 0x4890F86: TclNRRunCallbacks (tclBasic.c:4461)
==26628==    by 0x489237E: TclEvalEx (tclBasic.c:5330)
==26628==    by 0x4891CE2: Tcl_EvalEx (tclBasic.c:4995)
==26628==    by 0x5C6C7BC: Tk_BindEvent (tkBind.c:1518)
==26628==    by 0x5CBEFD7: CanvasDoEvent (tkCanvas.c:5228)
==26628==    by 0x5CBE9F8: PickCurrentItem (tkCanvas.c:5046)
==26628==    by 0x5CBE673: CanvasBindProc (tkCanvas.c:4824)
==26628== 
==26628== (action on error) vgdb me ... 


Reply via email to