On Fri, 2024-07-12 at 07:06 -0700, bah...@bahmanm.com 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
Scid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scid-users

Reply via email to