Well, it happened again, aMule did eat all the available memory, but this time the script did save my gnome-session and allowed me to debug.
IMVHO this is the same case than in RRM, it happened when I did set up a hard limit on speed and a lot of connections started queuing without being served, or something like that.
Some backtraces:
(gdb) thread apply all bt
Hilo 3 (Thread 0x7fc3f6bb4700 (LWP 22872)):
#0 0x00007fc401f5036d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
#1 0x00007fc40058b3ec in wxMicroSleep (microseconds=<value optimized out>) at ../src/unix/utilsunx.cpp:191
#2 0x0000000000574bab in UploadBandwidthThrottler::Entry (this=<value optimized out>)
at UploadBandwidthThrottler.cpp:323
#3 0x00007fc400584dfa in wxThreadInternal::PthreadStart (thread=0x2cd7c00) at ../src/unix/threadpsx.cpp:766
#4 0x00007fc401f48971 in start_thread (arg=<value optimized out>) at pthread_create.c:304
#5 0x00007fc3ff81692d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6 0x0000000000000000 in ?? ()
Hilo 2 (Thread 0x7fc3f5bb1700 (LWP 22874)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1 0x00007fc401f4a849 in _L_lock_953 () from /lib/libpthread.so.0
#2 0x00007fc401f4a66b in __pthread_mutex_lock (mutex=0x244c7d0) at pthread_mutex_lock.c:61
#3 0x00007fc400583216 in wxMutexInternal::Lock (this=0x244c7d0) at ../src/unix/threadpsx.cpp:248
#4 0x00007fc400586652 in Enter (this=0x23d41e0, event=<value optimized out>) at ../include/wx/thread.h:271
#5 wxEvtHandler::AddPendingEvent (this=0x23d41e0, event=<value optimized out>) at ../src/common/event.cpp:1152
#6 0x00000000006b95d1 in CTimerThread::Entry (this=0x2e2ad00) at Timer.cpp:70
#7 0x00007fc400584dfa in wxThreadInternal::PthreadStart (thread=0x2e2ad00) at ../src/unix/threadpsx.cpp:766
#8 0x00007fc401f48971 in start_thread (arg=<value optimized out>) at pthread_create.c:304
#9 0x00007fc3ff81692d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()
Hilo 1 (Thread 0x7fc402337940 (LWP 22867)):
#0 wxNodeBase::wxNodeBase (this=0x7fc37bb534b0, list=0x7fc3f00010b0, previous=0x7fc37bb533d0, next=0x0,
data=0xc1e500, key=...) at ../src/common/list.cpp:76
#1 0x00007fc400517cf5 in wxObjectListNode (this=0x7fc3f00010b0, prev=0x7fc37bb533d0, next=0x0, data=0xc1e500,
key=...) at ../include/wx/list.h:1185
#2 wxObjectList::CreateNode (this=0x7fc3f00010b0, prev=0x7fc37bb533d0, next=0x0, data=0xc1e500, key=...)
at ../include/wx/list.h:1185
#3 0x00007fc40052b001 in wxListBase::Append (this=0x7fc3f00010b0, object=0x0) at ../src/common/list.cpp:244
#4 0x00007fc40058666d in Append (this=0xc1e500, event=<value optimized out>) at ../include/wx/list.h:1185
#5 wxEvtHandler::AddPendingEvent (this=0xc1e500, event=<value optimized out>) at ../src/common/event.cpp:1156
#6 0x00007fc40082fa84 in wxSocketBase::OnRequest (this=0x485c990, notification=wxSOCKET_OUTPUT)
at ../src/common/socket.cpp:1006
#7 0x00007fc40083442e in GSocket::Detected_Write (this=0x6459110) at ../src/unix/gsocket.cpp:1836
#8 0x00007fc3fec8399f in gdk_io_invoke (source=<value optimized out>, condition=<value optimized out>,
data=<value optimized out>) at /build/buildd/gtk+2.0-2.22.0/gdk/gdkevents.c:1082
#9 0x00007fc3fd0ec342 in g_main_dispatch (context=0x23d4780) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2149
#10 g_main_context_dispatch (context=0x23d4780) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2702
#11 0x00007fc3fd0f02a8 in g_main_context_iterate (context=0x23d4780, block=<value optimized out>,
dispatch=<value optimized out>, self=<value optimized out>) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2780
#12 0x00007fc3fd0f07b5 in g_main_loop_run (loop=0x2c3b4e0) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2988
#13 0x00007fc3ff0423e7 in IA__gtk_main () at /build/buildd/gtk+2.0-2.22.0/gtk/gtkmain.c:1237
#14 0x00007fc400c15a28 in wxEventLoop::Run (this=0x2e2a640) at ../src/gtk/evtloop.cpp:76
#15 0x00007fc400ca5f18 in wxAppBase::MainLoop (this=0x23d41e0) at ../src/common/appcmn.cpp:312
#16 0x00007fc40051f025 in wxEntry (argc=<value optimized out>, argv=<value optimized out>)
at ../src/common/init.cpp:448
#17 0x00000000005d0892 in main (argc=1, argv=0x7fc3f00010b0) at amule-gui.cpp:93
(gdb) thread apply all bt full
Hilo 3 (Thread 0x7fc3f6bb4700 (LWP 22872)):
#0 0x00007fc401f5036d in nanosleep () at ../sysdeps/unix/syscall-template.S:82
No locales.
#1 0x00007fc40058b3ec in wxMicroSleep (microseconds=<value optimized out>) at ../src/unix/utilsunx.cpp:191
tmReq = {tv_sec = 0, tv_nsec = 253000000}
#2 0x0000000000574bab in UploadBandwidthThrottler::Entry (this=<value optimized out>)
at UploadBandwidthThrottler.cpp:323
timeSinceLastLoop = 1
minFragSize = 1300
doubleSendSize = 2600
sleepTime = 254
thisLoopTick = 1572013229
bytesToSpend = <value optimized out>
extraSleepTime = 1
lastLoopTick = 1572013229
allowedDataRate = 10240
rememberedSlotCounter = 6
sendLock = {m_isOk = 16, m_mutex = @0x7fc40052d7d8}
#3 0x00007fc400584dfa in wxThreadInternal::PthreadStart (thread=0x2cd7c00) at ../src/unix/threadpsx.cpp:766
pthread = 0x2aa7110
rc = <value optimized out>
dontRunAtAll = false
__FUNCTION__ = "PthreadStart"
#4 0x00007fc401f48971 in start_thread (arg=<value optimized out>) at pthread_create.c:304
__res = <value optimized out>
pd = 0x7fc3f6bb4700
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140479634818816, -4108199948263213771, 140734433312144,
140479634819520, 140479827537984, 3, 4141992929088386357, 4140142868344747317}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
freesize = <value optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#5 0x00007fc3ff81692d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locales.
#6 0x0000000000000000 in ?? ()
No symbol table info available.
Hilo 2 (Thread 0x7fc3f5bb1700 (LWP 22874)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
No locales.
#1 0x00007fc401f4a849 in _L_lock_953 () from /lib/libpthread.so.0
No symbol table info available.
#2 0x00007fc401f4a66b in __pthread_mutex_lock (mutex=0x244c7d0) at pthread_mutex_lock.c:61
ignore1 = <value optimized out>
ignore2 = 38062032
ignore3 = -512
__PRETTY_FUNCTION__ = "__pthread_mutex_lock"
type = <value optimized out>
#3 0x00007fc400583216 in wxMutexInternal::Lock (this=0x244c7d0) at ../src/unix/threadpsx.cpp:248
err = <value optimized out>
__FUNCTION__ = "Lock"
#4 0x00007fc400586652 in Enter (this=0x23d41e0, event=<value optimized out>) at ../include/wx/thread.h:271
No locales.
#5 wxEvtHandler::AddPendingEvent (this=0x23d41e0, event=<value optimized out>) at ../src/common/event.cpp:1152
eventCopy = <value optimized out>
__FUNCTION__ = "AddPendingEvent"
#6 0x00000000006b95d1 in CTimerThread::Entry (this=0x2e2ad00) at Timer.cpp:70
now = <value optimized out>
delta = <value optimized out>
---Type <return> to continue, or q <return> to quit---
evt = {<wxEvent> = {<wxObject> = {_vptr.wxObject = 0x7dfa10, static ms_classInfo = {
m_className = 0x7fc4005b5050 L"wxObject", m_objectSize = 16, m_objectConstructor = 0,
m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7fc40137b180, m_next = 0x7fc40080dd20,
static sm_classTable = 0x2393010}, m_refData = 0x0}, m_eventObject = 0x0, m_eventType = 10245,
m_timeStamp = 0, m_id = 6128, m_callbackUserData = 0x0, m_propagationLevel = 0, m_skipped = false,
m_isCommandEvent = false, static ms_classInfo = {m_className = 0x7fc4005c71c0 L"wxEvent",
m_objectSize = 64, m_objectConstructor = 0, m_baseInfo1 = 0x7fc40080dc20, m_baseInfo2 = 0x0,
static sm_first = 0x7fc40137b180, m_next = 0x7fc40080fbc0,
static sm_classTable = 0x2393010}}, <No data fields>}
lastEvent = 1572010891
#7 0x00007fc400584dfa in wxThreadInternal::PthreadStart (thread=0x2e2ad00) at ../src/unix/threadpsx.cpp:766
pthread = 0x2e71ec0
rc = <value optimized out>
dontRunAtAll = false
__FUNCTION__ = "PthreadStart"
#8 0x00007fc401f48971 in start_thread (arg=<value optimized out>) at pthread_create.c:304
__res = <value optimized out>
pd = 0x7fc3f5bb1700
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140479618029312, -4108199948263213771, 140734433313232,
140479618030016, 140479827537984, 3, 4141999526695023925, 4140142868344747317}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
freesize = <value optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#9 0x00007fc3ff81692d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locales.
#10 0x0000000000000000 in ?? ()
No symbol table info available.
Hilo 1 (Thread 0x7fc402337940 (LWP 22867)):
#0 wxNodeBase::wxNodeBase (this=0x7fc37bb534b0, list=0x7fc3f00010b0, previous=0x7fc37bb533d0, next=0x0,
data=0xc1e500, key=...) at ../src/common/list.cpp:76
No locales.
#1 0x00007fc400517cf5 in wxObjectListNode (this=0x7fc3f00010b0, prev=0x7fc37bb533d0, next=0x0, data=0xc1e500,
key=...) at ../include/wx/list.h:1185
No locales.
#2 wxObjectList::CreateNode (this=0x7fc3f00010b0, prev=0x7fc37bb533d0, next=0x0, data=0xc1e500, key=...)
at ../include/wx/list.h:1185
No locales.
#3 0x00007fc40052b001 in wxListBase::Append (this=0x7fc3f00010b0, object=0x0) at ../src/common/list.cpp:244
__FUNCTION__ = "Append"
node = <value optimized out>
#4 0x00007fc40058666d in Append (this=0xc1e500, event=<value optimized out>) at ../include/wx/list.h:1185
No locales.
#5 wxEvtHandler::AddPendingEvent (this=0xc1e500, event=<value optimized out>) at ../src/common/event.cpp:1156
eventCopy = <value optimized out>
__FUNCTION__ = "AddPendingEvent"
#6 0x00007fc40082fa84 in wxSocketBase::OnRequest (this=0x485c990, notification=wxSOCKET_OUTPUT)
at ../src/common/socket.cpp:1006
event = aviso: can't find linker symbol for virtual table for `wxSocketEvent' value
{<wxEvent> = {<wxObject> = {_vptr.wxObject = 0xc11470, static ms_classInfo = {
m_className = 0x7fc4005b5050 L"wxObject", m_objectSize = 16, m_objectConstructor = 0,
m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x7fc40137b180, m_next = 0x7fc40080dd20,
static sm_classTable = 0x2393010}, m_refData = 0x0}, m_eventObject = 0x485c990, m_eventType = 10002,
m_timeStamp = 0, m_id = 6123, m_callbackUserData = 0x0, m_propagationLevel = 0, m_skipped = false,
m_isCommandEvent = false, static ms_classInfo = {m_className = 0x7fc4005c71c0 L"wxEvent",
m_objectSize = 64, m_objectConstructor = 0, m_baseInfo1 = 0x7fc40080dc20, m_baseInfo2 = 0x0,
static sm_first = 0x7fc40137b180, m_next = 0x7fc40080fbc0, static sm_classTable = 0x2393010}},
m_event = wxSOCKET_OUTPUT, m_clientData = 0x0, static ms_classInfo = {
m_className = 0x7fc400836e58 L"wxSocketEvent", m_objectSize = 80,
m_objectConstructor = 0x7fc40082e850 <wxSocketEvent::wxCreateObject()>, m_baseInfo1 = 0x7fc40080fc00,
---Type <return> to continue, or q <return> to quit---
m_baseInfo2 = 0x0, static sm_first = 0x7fc40137b180, m_next = 0x7fc400a40b40,
static sm_classTable = 0x2393010}}
flag = <value optimized out>
#7 0x00007fc40083442e in GSocket::Detected_Write (this=0x6459110) at ../src/unix/gsocket.cpp:1836
No locales.
#8 0x00007fc3fec8399f in gdk_io_invoke (source=<value optimized out>, condition=<value optimized out>,
data=<value optimized out>) at /build/buildd/gtk+2.0-2.22.0/gdk/gdkevents.c:1082
closure = 0x7fc3e81c7c70
gdk_cond = GDK_INPUT_WRITE
#9 0x00007fc3fd0ec342 in g_main_dispatch (context=0x23d4780) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2149
dispatch = 0x7fc3fd130a90 <g_io_unix_dispatch>
user_data = 0x7fc3e81c7c70
callback = 0x7fc3fec83950 <gdk_io_invoke>
cb_funcs = 0x7fc3fd38c610
cb_data = 0x7fc3e80659e0
current_source_link = {data = 0x7fc3e81a8110, next = 0x0}
source = 0x7fc3e81a8110
current = 0x2c22a60
i = 1
#10 g_main_context_dispatch (context=0x23d4780) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2702
No locales.
#11 0x00007fc3fd0f02a8 in g_main_context_iterate (context=0x23d4780, block=<value optimized out>,
dispatch=<value optimized out>, self=<value optimized out>) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2780
max_priority = 110
timeout = 0
some_ready = 1
nfds = 38
allocated_nfds = 12565584
fds = <value optimized out>
__PRETTY_FUNCTION__ = "g_main_context_iterate"
#12 0x00007fc3fd0f07b5 in g_main_loop_run (loop=0x2c3b4e0) at /build/buildd/glib2.0-2.26.1/glib/gmain.c:2988
self = 0x23d5570
__PRETTY_FUNCTION__ = "g_main_loop_run"
#13 0x00007fc3ff0423e7 in IA__gtk_main () at /build/buildd/gtk+2.0-2.22.0/gtk/gtkmain.c:1237
tmp_list = 0x2e2a640
functions = 0x0
init = 0x7fc40108d588
loop = <value optimized out>
#14 0x00007fc400c15a28 in wxEventLoop::Run (this=0x2e2a640) at ../src/gtk/evtloop.cpp:76
__FUNCTION__ = "Run"
exitcode = <value optimized out>
#15 0x00007fc400ca5f18 in wxAppBase::MainLoop (this=0x23d41e0) at ../src/common/appcmn.cpp:312
mainLoop = {<wxEventLoopPtr> = {m_ptr = 0x2e2a640}, m_pp = 0x23d4258, m_pOld = 0x0}
#16 0x00007fc40051f025 in wxEntry (argc=<value optimized out>, argv=<value optimized out>)
at ../src/common/init.cpp:448
No locales.
#17 0x00000000005d0892 in main (argc=1, argv=0x7fc3f00010b0) at amule-gui.cpp:93
No locales.