We discussed it in this morning’s (08:15 UTC) Infra/RelEng standup call, I think @zlopez mentioned it first: the httpd process on pkgs01.rdu3 regularly dumps core (every odd minute or three):
httpd
pkgs01.rdu3
[root@pkgs01 pagure][PROD-RDU3]# coredumpctl list --reverse | head TIME PID UID GID SIG COREFILE EXE Thu 2025-07-17 14:16:30 GMT 1267788 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:14:46 GMT 1267162 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:13:19 GMT 1266272 1000 1494358698 6 present /usr/sbin/httpd Thu 2025-07-17 14:10:02 GMT 1265106 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:09:00 GMT 1264831 1000 1494358698 6 present /usr/sbin/httpd Thu 2025-07-17 14:08:43 GMT 1264737 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:07:36 GMT 1264147 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:06:31 GMT 1263119 1000 1494358698 11 present /usr/sbin/httpd Thu 2025-07-17 14:06:19 GMT 1263060 1000 1494358698 11 present /usr/sbin/httpd
Here’s an exemplary one:
[root@pkgs01 pagure][PROD-RDU3]# coredumpctl info 1267788 PID: 1267788 (httpd) UID: 1000 (pagure) GID: 1494358698 (xpackager) Signal: 11 (SEGV) Timestamp: Thu 2025-07-17 14:16:29 GMT (15min ago) Command Line: pagure -DFOREGROUND Executable: /usr/sbin/httpd Control Group: / Slice: -.slice Boot ID: d6921eff650c4d358b02b8be1d34b576 Machine ID: 2cb1691b08bd4a8fa022e3bf3a140ff3 Hostname: pkgs01.rdu3.fedoraproject.org Storage: /var/lib/systemd/coredump/core.httpd.1000.d6921eff650c4d358b02b8be1d34b576.1267788.17> Message: Process 1267788 (httpd) of user 1000 dumped core. Stack trace of thread 1269789: #0 0x00007fe279df7b53 PyErr_SetObject (libpython3.6m.so.1.0) #1 0x00007fe279e02c21 PyErr_SetString (libpython3.6m.so.1.0) #2 0x00007fe279e10be2 PyException_SetTraceback (libpython3.6m.so.1.0) #3 0x00007fe279d61dc1 _PyErr_FormatFromCause (libpython3.6m.so.1.0) #4 0x00007fe279dc8679 call_function.cold.3302 (libpython3.6m.so.1.0) #5 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #6 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #7 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #8 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #9 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #10 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #11 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #12 0x00007fe279dec154 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #13 0x00007fe279e6c370 fast_function (libpython3.6m.so.1.0) #14 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #15 0x00007fe279e90ef5 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #16 0x00007fe279decac5 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #17 0x00007fe279e8e42f function_call (libpython3.6m.so.1.0) #18 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #19 0x00007fe279e92120 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #20 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #21 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #22 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #23 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #24 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #25 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #26 0x00007fe279ded682 _PyFunction_FastCallDict (libpython3.6m.so.1.0) #27 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #28 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #29 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #30 0x00007fe279f00872 t_bootstrap (libpython3.6m.so.1.0) #31 0x00007fe279ea6a14 pythread_wrapper (libpython3.6m.so.1.0) #32 0x00007fe28c4d51ca start_thread (libpthread.so.0) #33 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1267788: #0 0x00007fe28c4db6e5 pthread_cond_timedwait@@GLIBC_2.3.2 (libpthread.so.0) #1 0x00007fe279deb68c take_gil (libpython3.6m.so.1.0) #2 0x00007fe279e9665e _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #3 0x00007fe279dec154 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #4 0x00007fe279ded87a _PyFunction_FastCallDict (libpython3.6m.so.1.0) #5 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #6 0x00007fe279e0f588 PyObject_CallFunctionObjArgs (libpython3.6m.so.1.0) #7 0x00007fe279e6aa47 collect (libpython3.6m.so.1.0) #8 0x00007fe279ee27fb _PyGC_CollectNoFail (libpython3.6m.so.1.0) #9 0x00007fe279efc839 PyImport_Cleanup (libpython3.6m.so.1.0) #10 0x00007fe279dc402c Py_EndInterpreter (libpython3.6m.so.1.0) #11 0x00007fe27a2441e7 Interpreter_dealloc (mod_wsgi_python3.so) #12 0x00007fe279dd926e free_keys_object (libpython3.6m.so.1.0) #13 0x00007fe27a24d9ba wsgi_python_child_cleanup (mod_wsgi_python3.so) #14 0x00007fe28c70dd6e apr_pool_destroy (libapr-1.so.0) #15 0x00007fe27a258f95 wsgi_start_process (mod_wsgi_python3.so) #16 0x00007fe27a25b924 wsgi_manage_process (mod_wsgi_python3.so) #17 0x00007fe28c71025f apr_proc_other_child_alert (libapr-1.so.0) #18 0x00007fe2811e17aa event_run (mod_mpm_event.so) #19 0x0000562dc4d112ee ap_run_mpm (httpd) #20 0x0000562dc4d097a3 main (httpd) #21 0x00007fe28bf2c7e5 __libc_start_main (libc.so.6) #22 0x0000562dc4d098ee _start (httpd) Stack trace of thread 1269790: #0 0x00007fe28c0272df __select (libc.so.6) #1 0x00007fe279ee276a time_sleep (libpython3.6m.so.1.0) #2 0x00007fe279e8f52d call_function (libpython3.6m.so.1.0) #3 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #4 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #5 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #6 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #7 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #8 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #9 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #10 0x00007fe279ded682 _PyFunction_FastCallDict (libpython3.6m.so.1.0) #11 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #12 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #13 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #14 0x00007fe279f00872 t_bootstrap (libpython3.6m.so.1.0) #15 0x00007fe279ea6a14 pythread_wrapper (libpython3.6m.so.1.0) #16 0x00007fe28c4d51ca start_thread (libpthread.so.0) #17 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1269788: #0 0x00007fe28c031477 epoll_wait (libc.so.6) #1 0x00007fe271fa95d8 pyepoll_poll (select.cpython-36m-x86_64-linux-gnu.so) #2 0x00007fe279e8f8d1 call_function (libpython3.6m.so.1.0) #3 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #4 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #5 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #6 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #7 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #8 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #9 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #10 0x00007fe279dec154 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #11 0x00007fe279e6c370 fast_function (libpython3.6m.so.1.0) #12 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #13 0x00007fe279e90ef5 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #14 0x00007fe279ded682 _PyFunction_FastCallDict (libpython3.6m.so.1.0) #15 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #16 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #17 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #18 0x00007fe279e92120 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #19 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #20 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #21 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #22 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #23 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #24 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #25 0x00007fe279ded682 _PyFunction_FastCallDict (libpython3.6m.so.1.0) #26 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #27 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #28 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #29 0x00007fe279f00872 t_bootstrap (libpython3.6m.so.1.0) #30 0x00007fe279ea6a14 pythread_wrapper (libpython3.6m.so.1.0) #31 0x00007fe28c4d51ca start_thread (libpthread.so.0) #32 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1270890: #0 0x00007fe28bffa178 __nanosleep (libc.so.6) #1 0x00007fe28bffa07e sleep (libc.so.6) #2 0x00007fe27a24daf9 wsgi_reaper_thread (mod_wsgi_python3.so) #3 0x00007fe28c4d51ca start_thread (libpthread.so.0) #4 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1267789: #0 0x00007fe28c0272df __select (libc.so.6) #1 0x00007fe28c719919 apr_sleep (libapr-1.so.0) #2 0x00007fe27a24a75b wsgi_monitor_thread (mod_wsgi_python3.so) #3 0x00007fe28c4d51ca start_thread (libpthread.so.0) #4 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1267790: #0 0x00007fe28c0272df __select (libc.so.6) #1 0x00007fe28c719919 apr_sleep (libapr-1.so.0) #2 0x00007fe27a24d43a wsgi_deadlock_thread (mod_wsgi_python3.so) #3 0x00007fe28c4d51ca start_thread (libpthread.so.0) #4 0x00007fe28bf2b8d3 __clone (libc.so.6) Stack trace of thread 1269791: #0 0x00007fe28c4dda46 do_futex_wait.constprop.1 (libpthread.so.0) #1 0x00007fe28c4ddb38 __new_sem_wait_slow.constprop.0 (libpthread.so.0) #2 0x00007fe279deadf2 PyThread_acquire_lock_timed (libpython3.6m.so.1.0) #3 0x00007fe279e698f4 lock_PyThread_acquire_lock (libpython3.6m.so.1.0) #4 0x00007fe279e8f8d1 call_function (libpython3.6m.so.1.0) #5 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #6 0x00007fe279dec154 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #7 0x00007fe279e6c370 fast_function (libpython3.6m.so.1.0) #8 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #9 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #10 0x00007fe279dec154 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #11 0x00007fe279ded8df _PyFunction_FastCallDict (libpython3.6m.so.1.0) #12 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #13 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #14 0x00007fe279dee43c _PyObject_FastCallDict (libpython3.6m.so.1.0) #15 0x00007fe279ec13f0 calliter_iternext (libpython3.6m.so.1.0) #16 0x00007fe279e90646 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #17 0x00007fe279decac5 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0) #18 0x00007fe279e8e42f function_call (libpython3.6m.so.1.0) #19 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #20 0x00007fe279e92120 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #21 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #22 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #23 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #24 0x00007fe279e6c188 fast_function (libpython3.6m.so.1.0) #25 0x00007fe279e8f657 call_function (libpython3.6m.so.1.0) #26 0x00007fe279e902b8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0) #27 0x00007fe279ded682 _PyFunction_FastCallDict (libpython3.6m.so.1.0) #28 0x00007fe279dee45e _PyObject_FastCallDict (libpython3.6m.so.1.0) #29 0x00007fe279e00290 method_call (libpython3.6m.so.1.0) #30 0x00007fe279df522b PyObject_Call (libpython3.6m.so.1.0) #31 0x00007fe279f00872 t_bootstrap (libpython3.6m.so.1.0) #32 0x00007fe279ea6a14 pythread_wrapper (libpython3.6m.so.1.0) #33 0x00007fe28c4d51ca start_thread (libpthread.so.0) #34 0x00007fe28bf2b8d3 __clone (libc.so.6)
The SIGSEGV is delivered to the offending thread, whose backtrace always seems to have this structure:
pthread_cond_timedwait@@GLIBC_2.3.2 => take_gil => … => [Python Garbage Collector related] => … => PyImport_Cleanup => Py_EndInterpreter => … => wsgi_python_child_cleanup => apr_pool_destroy
I take it as: httpd winds down a worker, mod_wsgi cleans up the Python (sub-)interpreter, and garbage collection trips over something that doesn’t exist any longer.
mod_wsgi
I don’t know why this didn’t happen before the DC move, so I can only guess that maybe we had this problem before, a configuration hot-fix was applied which didn’t end up in Ansible, so the fix was lost in the move. Or it happened and we didn’t notice?
Anyway, let’s collect more info here.
I was curious and checked on pagure02:
pagure02
[root@pagure02 ~][PROD]# coredumpctl --reverse | head No coredumps found.
Perhaps comparing differences between the src.fp.o and pagure.io instances can give some insight in how to fix it.
src.fp.o
pagure.io
Metadata Update from @kevin: - Issue priority set to: Waiting on Assignee (was: Needs Review) - Issue tagged with: medium-gain, medium-trouble, ops
@nphilipp The src.fp.o didn't produced coredumps till I added CoreDumpDirectory /tmp to httpd dist-git conf. But you can still see the errors being reported in httpd error log.
CoreDumpDirectory /tmp
It seems that pkgs01.iad2 dumped core before the DC move, we just didn’t notice:
pkgs01.iad2
[root@log01 30][PROD-RDU3]# pwd /var/log/hosts/pkgs01.iad2.fedoraproject.org/2025/06/30 [root@log01 30][PROD-RDU3]# xzgrep systemd-coredump messages.log.xz | tail -n 5 Jun 30 14:21:13 pkgs01 systemd-coredump[1782251]: Removed old coredump core.httpd.1000.f6c697a505ae4311887ed864512cdd0a.1649482.1751282904000000.lz4. Jun 30 14:21:14 pkgs01 systemd-coredump[1782251]: Process 1780105 (httpd) of user 1000 dumped core.#012#012Stack trace of thread 1781734:#012#0 0x00007fc9ae3afa12 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0)#012#1 0x00007fc9ae42f2f0 fast_function (libpython3.6m.so.1.0)#012#2 0x00007fc9ae452537 call_function (libpython3.6m.so.1.0)#012#3 0x00007fc9ae453198 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#4 0x00007fc9ae42f108 fast_function (libpython3.6m.so.1.0)#012#5 0x00007fc9ae452537 call_function (libpython3.6m.so.1.0)#012#6 0x00007fc9ae453198 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#7 0x00007fc9ae3af0a4 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0)#012#8 0x00007fc9ae42f2f0 fast_function (libpython3.6m.so.1.0)#012#9 0x00007fc9ae452537 call_function (libpython3.6m.so.1.0)#012#10 0x00007fc9ae453dd8 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#11 0x00007fc9ae3afa15 _PyEval_EvalCodeWithName (libpython3.6m.so.1.0)#012#12 0x00007fc9ae45130f function_call (libpython3.6m.so.1.0)#012#13 0x00007fc9ae3b822b PyObject_Call (libpython3.6m.so.1.0)#012#14 0x00007fc9ae455005 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#15 0x00007fc9ae42f108 fast_function (libpython3.6m.so.1.0)#012#16 0x00007fc9ae452537 call_function (libpython3.6m.so.1.0)#012#17 0x00007fc9ae453198 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#18 0x00007fc9ae42f108 fast_function (libpython3.6m.so.1.0)#012#19 0x00007fc9ae452537 call_function (libpython3.6m.so.1.0)#012#20 0x00007fc9ae453198 _PyEval_EvalFrameDefault (libpython3.6m.so.1.0)#012#21 0x00007fc9ae3b05d2 _PyFunction_FastCallDict (libpython3.6m.so.1.0)#012#22 0x00007fc9ae3b13ae _PyObject_FastCallDict (libpython3.6m.so.1.0)#012#23 0x00007fc9ae3c32c0 method_call (libpython3.6m.so.1.0)#012#24 0x00007fc9ae3b822b PyObject_Call (libpython3.6m.so.1.0)#012#25 0x00007fc9ae4c3672 t_bootstrap (libpython3.6m.so.1.0)#012#26 0x00007fc9ae469914 pythread_wrapper (libpython3.6m.so.1.0)#012#27 0x00007fc9c0a971ca n/a (/usr/lib64/libpthread-2.28.so (deleted)) Jun 30 14:21:14 pkgs01 systemd[1]: systemd-coredump@19564-1782250-0.service: Succeeded. Jun 30 14:23:35 pkgs01 systemd-coredump[1783019]: Process 1781599 (httpd) of user 1000 dumped core.#012#012Stack trace of thread 1781766:#012#0 0x00007fc9c050352f n/a (/usr/lib64/libc-2.28.so (deleted))#012#1 0x00007fc9c054ba2c n/a (/usr/lib64/libc-2.28.so (deleted)) Jun 30 14:23:35 pkgs01 systemd[1]: systemd-coredump@19565-1783018-0.service: Succeeded. [root@log01 30][PROD-RDU3]#
I don’t find anything in the pagure02 logs, but notice that there are only pagure0[12].vpn.* directories (neither .iad2. nor .rdu3.).
pagure0[12].vpn.*
.iad2.
.rdu3.
I don’t find anything in the pagure02 logs, …
Hmm, probably also because it doesn’t have CoreDumpDirectory /tmp.
@nphilipp Is this still something we need to resolve?
This issue has been migrated to Fedora Forge: https://forge.fedoraproject.org/infra/tickets/issues/12670
Please continue any further discussion there.
Metadata Update from @ryanlerch: - Issue close_status updated to: Migrated to Fedora Forge - Issue status updated to: Closed (was: Open)