Hi Ulrich and community members,
>I guess the more fundamental question would be, do we even need
>sync_threadlists() at all when debugging a core file? Here,
>the list of threads can never change, so what is the point of
>attempting to sync it? Does it work if you just never call
>sync_threadlists() for core files (or have it return early)?
Yes Ulrich, you are right. We need not call sync_threadlists ().
# git diff
diff --git a/gdb/aix-thread.c b/gdb/aix-thread.c
index c2e6b6d2bd6..50065c0d8a7 100644
--- a/gdb/aix-thread.c
+++ b/gdb/aix-thread.c
@@ -884,7 +884,11 @@ pd_update (pid_t pid)
if (status != PTHDB_SUCCESS)
return ptid_t (pid);
- sync_threadlists (pid);
+ /* Attempt to sync_threadlists () only when debugging process files,
+ not core files since list of threads never change for core files.
+ */
+ if (target_has_execution ())
+ sync_threadlists (pid);
/* Define "current thread" as one that just received a trap signal. */
With this patch right now,
I am able to see my core contents like below. That is the root cause of this issue. Let me know if you are okay and I will send a v2 of this patch.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0900000000e2b25c in .PyThreadState_DeleteCurrent ()
from /opt/freeware/lib/libpython3.9.a(libpython3.9.so)
(gdb) bt
#0 0x0900000000e2b25c in .PyThreadState_DeleteCurrent ()
from /opt/freeware/lib/libpython3.9.a(libpython3.9.so)
#1 0x090000000de52dd0 in _Py_M__importlib_bootstrap ()
from /opt/freeware/lib64/libpython3.9.a(libpython3.9.so)
#2 0x0900000000e2cb84 in ._PyObject_CheckCrossInterpreterData ()
from /opt/freeware/lib/libpython3.9.a(libpython3.9.so)
#3 0x09001000a0b6d968 in ?? () from /opt/freeware/lib/libpython3.9.a(libpython3.9.so)
#4 0x09000000031dcc10 in ?? ()
#5 0x090000000dda8b50 in ._PyImport_LoadDynamicModuleWithSpec ()
from /opt/freeware/lib64/libpython3.9.a(libpython3.9.so)
#6 0x090000000dbebf84 in ._PyImport_FindExtensionObject ()
from /opt/freeware/lib64/libpython3.9.a(libpython3.9.so)
Thanks and regards,
Aditya.