On Fri, 2024-07-12 at 07:06 -0700, [email protected] wrote:
> I cannot open the database any more. As soon as I try to do so, Scid exits
> with the error
> message below:
>
> Segmentation fault (core dumped)
>
> Is there any way to repair a "damaged" database or at least recover the
> data?
>
Thanks all for your input and hints 🙏
TLDR; problem is solved and I managed to recover all the games in the database
but one. Given the trauma, I can certainly live with a single lost game 😂
As Alan said, I forgot to add some debugging info to the original message:
- Scid: 5.0.2 (trunk)
- Database: si5
- OS: Linux x64 (openSUSE Tumbleweed)
Luckily, the filesystem was not damaged and it seemed to be only the integrity
of the data within the database which is broken.
$ ls -l
total 32K
-rw-r--r-- 1 bahman bahman 44K 11 Jul 02:23 'Player - Movaqar, Bahman.sg5'
-rw-r--r-- 1 bahman bahman 3.2K 11 Jul 02:23 'Player - Movaqar, Bahman.si5'
-rw-r--r-- 1 bahman bahman 1.1K 11 Jul 00:23 'Player - Movaqar, Bahman.sn5'
That led me to try to open the database as a tree
I then tried copying the games to clipbase but every time I did that, Scid
would segfault. Looking at the stacktrace below I got the intuition that the
the problem pertains to a single game and the rest of the database is OK:
Stack trace of thread 44477:
#0 0x00007f70b96b637a __strlen_sse2 (libc.so.6 + 0xb637a)
#1 0x00005615a4403c32 Tcl_NewStringObj (scid + 0x1cbc32)
#2 0x00005615a42a85c2
_ZN12_GLOBAL__N_117sc_base_gameslistEP9scidBaseTP10Tcl_InterpiPPKc (scid +
0x705c2)
#3 0x00005615a4320a9b TclInvokeStringCommand (scid + 0xe8a9b)
#4 0x00005615a4326002 TclNRRunCallbacks (scid + 0xee002)
#5 0x00007f70b9587d32 Ttk_InvokeEnsemble (libtk8.6.so + 0xf3d32)
#6 0x00007f70b958e35e WidgetInstanceObjCmd (libtk8.6.so + 0xfa35e)
#7 0x00005615a4326002 TclNRRunCallbacks (scid + 0xee002)
#8 0x00007f70b958f0da TtkWidgetInstateCommand (libtk8.6.so + 0xfb0da)
#9 0x00007f70b9587d32 Ttk_InvokeEnsemble (libtk8.6.so + 0xf3d32)
#10 0x00007f70b958e35e WidgetInstanceObjCmd (libtk8.6.so + 0xfa35e)
#11 0x00005615a4326002 TclNRRunCallbacks (scid + 0xee002)
#12 0x00007f70b958f0da TtkWidgetInstateCommand (libtk8.6.so + 0xfb0da)
#13 0x00007f70b9587d32 Ttk_InvokeEnsemble (libtk8.6.so + 0xf3d32)
#14 0x00007f70b958e35e WidgetInstanceObjCmd (libtk8.6.so + 0xfa35e)
#15 0x00005615a4326002 TclNRRunCallbacks (scid + 0xee002)
#16 0x00005615a4327fa0 TclEvalEx (scid + 0xeffa0)
#17 0x00005615a43287a7 Tcl_EvalEx (scid + 0xf07a7)
#18 0x00007f70b94d28e7 Tk_BindEvent (libtk8.6.so + 0x3e8e7)
#19 0x00007f70b94d753b TkBindEventProc (libtk8.6.so + 0x4353b)
#20 0x00007f70b94df82b Tk_HandleEvent (libtk8.6.so + 0x4b82b)
#21 0x00007f70b94dfa48 WindowEventProc (libtk8.6.so + 0x4ba48)
#22 0x00005615a43ec0c9 Tcl_ServiceEvent (scid + 0x1b40c9)
#23 0x00005615a43ec34d Tcl_DoOneEvent (scid + 0x1b434d)
#24 0x00007f70b94e03e2 Tk_MainLoop (libtk8.6.so + 0x4c3e2)
#25 0x00005615a43e67d5 Tcl_MainEx (scid + 0x1ae7d5)
#26 0x00005615a42fef5b _ZN7UI_impl4MainEiPPcPFvPvE.constprop.0 (scid +
0xc6f5b)
#27 0x00007f70b962a1f0 __libc_start_call_main (libc.so.6 + 0x2a1f0)
#28 0x00007f70b962a2b9 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a2b9)
#29 0x00005615a427325e _start (scid + 0x3b25e)
Stack trace of thread 44482:
#0 0x00007f70b971155c __select (libc.so.6 + 0x11155c)
#1 0x00005615a4430718 NotifierThreadProc (scid + 0x1f8718)
#2 0x00007f70b9692ba2 start_thread (libc.so.6 + 0x92ba2)
#3 0x00007f70b971400c __clone3 (libc.so.6 + 0x11400c)
ELF object binary architecture: AMD x86-64
So I opened the database as a tree which, fortunately, was successful.
Then I started searching games by header. I would leave everything as
blank/default except the "Number" field which I would incremented by 1 in each
iteration.
Of course I had to skip the corrupt game I mentioned earlier.
Hopefully this helps a fellow Scid user in a similar situation.
--
Bahman Movaqar (he/him/his)
https://linktr.ee/bahmanm
_______________________________________________
Scid-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scid-users