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