In this (long) period I made (holidays and then) many experiments. I tried to relate the application's crashes with some action of it or of mine. I did not have much success...
The greatest insuccess was Valgrind. aMule started with Valgrid runs very very slow! You can't make many tries with the interface, and most of all the downloads are quite absents (in addiction I received a low id). But in two occasions I was able to obtain something, but not very useful:
==3379== More than 10000000 total errors detected. I'm not reporting any more.
==3379== Final error counts will be inaccurate. Go fix your program!
==3379== Rerun with --error-limit=no to disable this cutoff. Note
==3379== that errors may occur in your program without prior warning from
==3379== Valgrind, because errors are no longer being displayed.
There was a huge number of these errors repeated:
==3379== Conditional jump or move depends on uninitialised value(s)
==3379== at 0x5895C67: CryptoPP::Integer::operator=(CryptoPP::Integer const&) (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x5898C2C: CryptoPP::Integer::Divide(CryptoPP::Integer&, CryptoPP::Integer&, CryptoPP::Integer const&, CryptoPP::Integer const&) (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x5898CAE: CryptoPP::Integer::Modulo(CryptoPP::Integer const&) const (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x58B3461: CryptoPP::CRT(CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&) (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x58B3850: CryptoPP::ModularRoot(CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&, CryptoPP::Integer const&) (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x58D8885: CryptoPP::InvertibleRSAFunction::CalculateInverse(CryptoPP::RandomNumberGenerator&, CryptoPP::Integer const&) const (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x49EC20: CryptoPP::TrapdoorFunctionInverse::CalculateRandomizedInverse(CryptoPP::RandomNumberGenerator&, CryptoPP::Integer const&) const (pubkey.h:95)
==3379== by 0x58C4318: CryptoPP::TF_SignerBase::SignAndRestart(CryptoPP::RandomNumberGenerator&, CryptoPP::PK_MessageAccumulator&, unsigned char*, bool) const (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x57ED1FA: CryptoPP::PK_Signer::SignMessage(CryptoPP::RandomNumberGenerator&, unsigned char const*, unsigned long, unsigned char*) const (in /usr/lib/libcrypto++.so.8.0.0)
==3379== by 0x499CEC: CClientCreditsList::CreateSignature(CClientCredits*, unsigned char*, unsigned char, unsigned int, unsigned char, void*) (ClientCreditsList.cpp:362)
==3379== by 0x4694ED: CUpDownClient::SendSignaturePacket() (BaseClient.cpp:2118)
==3379== by 0x46985A: CUpDownClient::ProcessPublicKeyPacket(unsigned char const*, unsigned int) (BaseClient.cpp:2154)
but the last error reported is this:
==3379== Conditional jump or move depends on uninitialised value(s)
==3379== at 0x5342E40: inflateReset2 (in /lib/libz.so.1.2.3.4)
==3379== by 0x5342F2F: inflateInit2_ (in /lib/libz.so.1.2.3.4)
==3379== by 0x533D648: uncompress (in /lib/libz.so.1.2.3.4)
==3379== by 0x792AA4: CPacket::UnPackPacket(unsigned int) (Packet.cpp:292)
==3379== by 0x5B34C6: CServerSocket::PacketReceived(CPacket*) (ServerSocket.cpp:665)
==3379== by 0x51DB1F: CEMSocket::OnReceive(int) (EMSocket.cpp:284)
==3379== by 0x5AF5A6: CServerSocket::OnReceive(wxSocketError) (ServerSocket.cpp:211)
==3379== by 0x5AEC9F: CServerSocketHandler::ServerSocketHandler(wxSocketEvent&) (ServerSocket.cpp:99)
==3379== by 0x6E5530F: wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) (in /usr/lib/libwx_baseu-2.8.so.0.7.0)
==3379== by 0x6E562D3: wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) (in /usr/lib/libwx_baseu-2.8.so.0.7.0)
==3379== by 0x6E563B6: wxEvtHandler::ProcessEvent(wxEvent&) (in /usr/lib/libwx_baseu-2.8.so.0.7.0)
==3379== by 0x6E5575F: wxEvtHandler::ProcessPendingEvents() (in /usr/lib/libwx_baseu-2.8.so.0.7.0)
This is the last because then there was the limit, not last because in this moment aMule crashed. I never reached a crash vith Valgrind!
Then I tried Valgrind with the no-limit option, but, I don't know why, aMule freezed after showing its interface and before connecting to the networks.
So I tried to repeat or observe some behaviours that seemed to make aMule crash. I found no relations with the download limit, and with the number of files I was downloading. I tried to start aMule and leave it there without touching everything of the interface. For a moment I had thought the problem happened only if I had minimized at least one time the window, but then I observed this is not a fixed law. I had noticed that if I never have minimized the window, the application didn't crash filling the memory, but with a "normal" crash:
--------------------------------------------------------------------------------
A fatal error has occurred and aMule has crashed.
Please assist us in fixing this problem by posting the backtrace below in our
'aMule Crashes' forum and include as much information as possible regarding the
circumstances of this crash. The forum is located here:
http://forum.amule.org/index.php?board=67.0If possible, please try to generate a real backtrace of this crash:
http://wiki.amule.org/index.php/Backtraces----------------------------=| BACKTRACE FOLLOWS: |=----------------------------
Current version is: aMule SVN compiled with wxGTK2 v2.8.11 (Snapshot: rev. 10424)
Running on: Linux 2.6.35-25-generic x86_64
[2] CamuleApp::OnFatalException() in amule.cpp:1020
[3] wxFatalSignalHandler in /usr/lib/libwx_baseu-2.8.so.0[0x7fda7c2a272c]
[4] ?? in /lib/libpthread.so.0[0x7fda7e242b40]
[5] pthread_mutex_lock in /lib/libpthread.so.0[0x7fda7e23c634]
[6] ?? in /lib/libglib-2.0.so.0[0x7fda78e1d04f]
[7] g_source_remove in /lib/libglib-2.0.so.0[0x7fda78e1f90e]
[8] GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket*, GSocketEvent) in /usr/lib/libwx_gtk2u_core-2.8.so.0[0x7fda7c90bc56]
[9] GSocket::Detected_Write() in /usr/lib/libwx_baseu_net-2.8.so.0[0x7fda7c52f5a7]
[10] ?? in /usr/lib/libgdk-x11-2.0.so.0[0x7fda7a9b499f]
[11] g_main_context_dispatch in /lib/libglib-2.0.so.0[0x7fda78e1d342]
[12] ?? in /lib/libglib-2.0.so.0[0x7fda78e212a8]
[13] g_main_loop_run in /lib/libglib-2.0.so.0[0x7fda78e217b5]
[14] gtk_main in /usr/lib/libgtk-x11-2.0.so.0[0x7fda7ad733e7]
[15] wxEventLoop::Run() in /usr/lib/libwx_gtk2u_core-2.8.so.0[0x7fda7c90a578]
[16] wxAppBase::MainLoop() in /usr/lib/libwx_gtk2u_core-2.8.so.0[0x7fda7c98fb0b]
[17] wxEntry(int&, wchar_t**) in /usr/lib/libwx_baseu-2.8.so.0[0x7fda7c244695]
[18] main in amule-gui.cpp:93
[19] __libc_start_main in /lib/libc.so.6[0x7fda7b47fd8e]
[20] _start in :0
--------------------------------------------------------------------------------
Only one of my experiments had a full success. I'm sure the problem (both the types of crash) depends on the dimension of the files I'm downloading. I usually have files of 200-350 MB, and with these ones aMule
never crashes (in this moment it has been running for more than 12 hours).
I reported all the tests I have done, knowing that someone was useless, but hoping that you could find something useful in them.