aMule Forum
English => Compilation problems => Topic started by: Alfred on September 19, 2008, 05:20:41 PM
-
Firstly, I try to build aMule 2.2.2 on Solaris Nevada b98 x86 with GCC 4.2.3. As aMule depends on libcryptopp and wxwidgets, I grab the corresponding spec files(SFElibcryptopp.spec and SFEwxwidgets-gnu.spec) from SFE(http://pkgbuild.sourceforge.net/spec-files-extra/) and build them with CBE. Everything works fine. aMule can run successfully on the box and download files.
Then I switch the compiler to Sun Studio 12(the recommended one for Solaris). I have to tweak with the code a little bit to build aMule with it due to the difference between two compilers.
But when I run amule from terminal, there was a window popup saying "This is the first time you run aMule 2.2.2...". If I click "OK" to proceed, it crashes, with the core stack like below:
[1] std::vector<bool,std::allocator<bool> >::reference::operator bool(0x80455c8, 0x80455c8, 0x80455fc, 0xfe3930d0), at 0xfeb993e4
=>[2] std::find<std::vector<bool,std::allocator<bool> >::iterator,bool>(first = CLASS, last = CLASS, value = ???) (optimized), at 0x8c3bc66 (line ~71) in "algorithm.cc"
[3] CryptoPP::PrimeSieve::NextCandidate(this = ???, c = CLASS) (optimized), at 0x8c348d2 (line ~311) in "nbtheory.cpp"
[4] CryptoPP::FirstPrime(p = CLASS, max = CLASS, equiv = CLASS, mod = CLASS, pSelector = ???) (optimized), at 0x8c354d9 (line ~436) in "nbtheory.cpp"
[5] CryptoPP::FirstPrime(p = CLASS, max = CLASS, equiv = CLASS, mod = CLASS, pSelector = ???) (optimized), at 0x8c35648 (line ~425) in "nbtheory.cpp"
[6] CryptoPP::Integer::GenerateRandomNoThrow(this = ???, i_rng = CLASS, params = CLASS) (optimized), at 0x8c21a02 (line ~3342) in "integer.cpp"
[7] CryptoPP::Integer::GenerateRandom(this = ???, rng = CLASS, params = CLASS) (optimized), at 0x8c52995 (line ~250) in "integer.h"
[8] CryptoPP::InvertibleRSAFunction::GenerateRandom(this = ???, rng = CLASS, alg = CLASS) (optimized), at 0x8c4a4fd (line ~120) in "rsa.cpp"
[9] CryptoPP::InvertibleRSAFunction::Initialize(this = ???, rng = CLASS, keybits = ???, e = CLASS) (optimized), at 0x8c4ac25 (line ~145) in "rsa.cpp"
[10] CClientCreditsList::CreateKeyPair(this = 0x93306c8), line 264 in "ClientCreditsList.cpp"
[11] CClientCreditsList::InitalizeCrypting(this = 0x93306c8), line 316 in "ClientCreditsList.cpp"
[12] CClientCreditsList::CClientCreditsList(this = 0x93306c8), line 54 in "ClientCreditsList.cpp"
[13] CamuleApp::OnInit(this = 0x9286878), line 726 in "amule.cpp"
[14] CamuleGuiApp::OnInit(this = 0x9286878), line 263 in "amule-gui.cpp"
[15] wxAppConsole::CallOnInit(this = 0x9286878), line 76 in "app.h"
[16] wxEntry(0xfe5a0f20, 0x92560e8, 0x0, 0xfe4ce970, 0x8046f98), at 0xfe4ce893
[17] wxEntry(0x8046fa0, 0x8046fc8), at 0xfe4ce99f
[18] main(argc = 1, argv = 0x8046fc8), line 95 in "amule-gui.cpp"
Error message in the terminal:
Initialising aMule
Checking if there is an instance already running...
No other instances are running.
HTTP download thread started
--------------------------------------------------------------------------------
A fatal error has occurred and aMule has crashed.
......
It's weird to me that the crash seems to be with libcryptopp(version 5.2.2).
If I use the old profile from gcc-based aMule, the GUI can be launched successfully, but hang immediately with SEGV:
also the core as below:
[1] _free_unlocked(0x10000, 0xf8c1ece8, 0xfec3bfac, 0xf8c1ea80, 0xfec26cd2, 0x10000), at 0xfe2a4b05
[2] free(0x10000, 0xf8c1ea5c, 0x86e684e, 0xfec26cba), at 0xfe2a4ac6
[3] operator delete(0x10000, 0x98d8118, 0x95ba8f2, 0xfec26b44), at 0xfec26cd2
[4] operator delete[](0x10000, 0x0), at 0xfec26b56
=>[5] CPacket::~CPacket(this = 0x95ba8e8), line 164 in "Packet.cpp"
[6] CEMSocket::Send(this = 0x98d8b08, maxNumberOfBytesToSend = 5360U, minFragSize = 536U, onlyAllowedToSendControlPacket = true), line 594 in "EMSocket.cpp"
[7] CEMSocket::SendControlData(this = 0x98d8b08, maxNumberOfBytesToSend = 5172U, minFragSize = 536U), line 70 in "EMSocket.h"
[8] UploadBandwidthThrottler::Entry(this = 0x95e0b00), line 395 in "UploadBandwidthThrottler.cpp"
[9] wxThreadInternal::PthreadStart(0x95e0b00, 0xfe2f8603, 0xfe392000, 0xfe52ce34, 0x400), at 0xfe52cf21
[10] wxPthreadStart(0x95e0b00), at 0xfe52ce46
[11] _thrp_setup(0xf9f21200), at 0xfe2fa1d0
[12] _lwp_start(0xfe392000, 0xf8c1ea50, 0xfe2f36ce, 0x98827a0, 0xf8c1ea40, 0xfe2a4ac6), at 0xfe2fa430
Error message in the terminal:
Initialising aMule
Checking if there is an instance already running...
No other instances are running.
HTTP download thread started
ListenSocket: Ok.
Loading temp files from /export/home/alfred/.aMule/Temp.
All PartFiles Loaded.
No shareable files found in directory: /export/home/alfred/.aMule/Incoming
Host: amule.sourceforge.net:80
URL: http://amule.sourceforge.net/lastversion
Response: 200 (Error: 0)
Download size: 6
HTTP download thread ended
--------------------------------------------------------------------------------
A fatal error has occurred and aMule has crashed.
......
Any hints for the error above are appreciated.
-
Hi!
You seem to be using cryptopp 5.2.2, but latest one is 5.5.2. Was it a typo, or is that the real version you are using? maybe using the latest one would help. Also, compiling the dependant libraries with the same compiler might be of help. BTW: I know wxwidgets have issues compiling with unicode support (which amule requires) using SUN studio, so that could also be an issue. I have compiled using gcc and it works fine, using either solaris 10 U4 or opensolaris 2008.05.
Regards.
-
Hi,
Thanks for the reply. It was my typo. The cryptopp version here is 5.5.2. As for wxWidgets, unicode has been enabled during configure. FYI, the spec I'm using is here: https://pkgbuild.svn.sourceforge.net/svnroot/pkgbuild/spec-files-extra/trunk/SFEwxwidgets.spec. Yes, to build it with gcc works for me too on the Solaris Nevada b98 box here. But as wxWidgets will be integrated into OpenSolaris soon(built by Sun Studio), I think it's better to make aMule work with Sun Studio 12 too.
Best,
-
Alfred, do you have tested your cryptopp compilation? After compiling cryptopp run 'cryptest.exe v' from the cryptopp source directory, for the Crypto++ validation suite. Until all tests pass, you may play with the optimization flags (using -O1 instead of -O2, adding -DCRYPTOPP_DISABLE_ASM, etc -- sorry, I don't know the compiler flags of Sun Studio, I used the gcc equivalents).
After you have a working cryptopp, rebuild aMule.
-
GonoszTopi, thanks for the hint. The cryptopp built with Sun Studio does have some problem to run the test. It dumps core when "Generating new encryption key...". The core stack is similar with my first post for creating a new aMule profile.
-
After I change the optimization level from -xO2 to -xO1, the test case runs smoothly. And I can now run aMule(built by Sun Studio 12) on my Solaris Nevada b98 box here. But the aMule can't connect to any server in the list(eD2k). It always notifies me something like:
ServerSocket.cpp(754): Connecting to ...... using protocol obfuscation.
ServerConnect.cpp(190): Connected to ...... timed out.
or
Lost connection to ......
I also tried the same profile with the aMule built with GCC on the same box. This one works. The difference is the dependent libraries(libcryptopp and wxWidgets) are also built with GCC.
Any hint on how I can debug this? It might be related to the code tweaking. Will check that too.
-
Hmm...I would guess the issue lies in cryptopp, since AFAIK it's used to obfuscate the traffic when aMule uses obfuscation. Have you tried to connect using no obfuscation? that would tell if the problem lies there or not (I guess)
Regards.
-
Finally figured out the root cause for the problem. It's caused by the fact that Sun Studio doesn't support "__attribute__((__packed__));" in src/OtherStructs.h. And all the packets communication is wrong.
Attached is the drafted patch. Two key issues haven't been resolved:
1. "StatTree.h", line 243: Error: Could not find a match for std::list<CStatTreeItemBase*>::sort(bool(*)(const CStatTreeItemBase*,const CStatTreeItemBase*)) needed in CStatTreeItemBase::ReSortChildren().
The code snippet is:
static bool ValueSort(CStatTreeItemBase* a, CStatTreeItemBase* b);
......
line 243: void ReSortChildren() { wxMutexLocker lock(m_lock); m_children.sort(ValueSort); }
Search in the head <list>. Seems that I need to match the compare function to: void sort (bool (*)(const_reference, const_reference)); But not sure how to do that. So I remove the compare function "ValueSort". It should be fine to use the default one.
2. Similar with 2. "ServerList.cpp", line 534: Error: Could not find a match for std::list<CServer*>::sort(ServerPriorityComparator) needed in CServerList::Sort().
The code snippet is:
struct ServerPriorityComparator {
bool operator()(const CServer* lhs, const CServer* rhs) {
......
}
};
......
line 534: m_servers.sort(ServerPriorityComparator());
Haven't found out a replacement for that either. Remove it for now and use the default compare function.
And __FUNCTION__ isn't defined in CC, cc does have that. I think it might be reasonable to replace it with __FILE__+__LINE__(on Solaris) for debug purpose.
Anyway, it works. wxWidgets 2.8.8 will be delivered into OpenSolaris soon. I'll only build libcryptopp myself then. So I'm happy :)
BTW, also put the spec(and patch) to SFE and others could build it from source with CBE on Solaris: https://pkgbuild.svn.sourceforge.net/svnroot/pkgbuild/spec-files-extra/trunk/SFEamule.spec.
-
Thanks for your patch, Alfred. i had tried to compile amule with SUN Studio, but never figured why it didn't worked. Therefore, my aMule always went compiled with gcc. I hope the patch gets reviewed and commited.
Regards.
-
I applied parts of your patch to current SVN. I also might have fixed the issue relating to the ValueSort function (key issue #1), please test. Issue #2 needs a bit more investigation.
However, I'm curious about some changes you made.
1.
- result.assign(m_servers.begin(), m_servers.end());
+ result.assign(m_servers.size(), *m_servers.begin());
... and similar changes. The first line copies all elements from the first to the last, while the second one fills result with size() copies of the first element of m_servers. This line could most likely be changed to result = m_servers;.
2. const-ness changes, such as
- typedef std::pair<uint32, CUpDownClient*> IDMapPair;
+ typedef std::pair<const uint32, CUpDownClient*> IDMapPair;
What's the reason behind these? What error/warning does the compiler issue?
I also post here the changes I applied, for your convenience. The others need to be reviewed/explained.
-
GonoszTopi, thanks for the quick fix :D
I tried to add "const" to fix key issue #1, but failed:
"StatTree.h", line 243: Error: Could not find a match for std::list<CStatTreeItemBase*>::sort(bool(const CStatTreeItemBase*,const CStatTreeItemBase*)) needed in CStatTreeItemBase::ReSortChildren().
The answer from Sun Studio guy is as below:
"The sort member function is missing from the list template in the default libCstd. Use STLport if you need better conformance to the C++ standard. Or modify the code to use the global sort function instead.
More details in the C++ FAQ:
http://docs.sun.com/source/820-4155/c++_faq.html#LibComp5
See Questions 3, 4, 5, and 6 in section D."
I feel that it's not easy to use STLport now as that means all the C++ libraries will need to build with it. btw, this comment also applies to the key issue #2.
To address your comments in the last post:
1. The comment from Sun Studio guy: "Similar problem as above. In this case, vector::assign is supposed to be a template, but is not a template in libCstd. If you use STLport the code should compile. " I change the code to:
+ const CServer** lbegin = result.begin();
+ CInternalList::const_iterator sbegin = m_servers.begin();
+ for (int i = 0; i < m_servers.size(); i++, lbegin++, sbegin++)
+ result.insert(lbegin, *sbegin);
The similar issue is with vector::insert:
"DownloadQueue.cpp", line 1468: Error: Could not find a match for std::vector<CPartFile*>::insert(CPartFile**, std::deque<CPartFile*>::iterator, std::deque<CPartFile*>::iterator) needed in CDownloadQueue::ObserverAdded(CObserver<CQueueEvent<CPartFile*>>*). Also update it as the attached patch.
How do you think of this?
2. Here is a link to explain the detail of the difference between libCstd and libstlport: http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html. Example of the build error is as below:
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPArgument*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPArgument*>>>::insert(const std::pair<const std::string, CUPnPArgument*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPArgument*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPArgument*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPArgument, &s_argument, &s_argumentList>.
"UPnPBase.h", line 301: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPAllowedValue*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPAllowedValue*>>>::insert(const std::pair<const std::string, CUPnPAllowedValue*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPAllowedValue*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPAllowedValue*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPAllowedValue, &s_allowedValue, &s_allowedValueList>.
"UPnPBase.h", line 344: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPAction*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPAction*>>>::insert(const std::pair<const std::string, CUPnPAction*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPAction*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPAction*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPAction, &s_action, &s_actionList>.
"UPnPBase.h", line 374: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPStateVariable*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPStateVariable*>>>::insert(const std::pair<const std::string, CUPnPStateVariable*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPStateVariable*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPStateVariable*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPStateVariable, &s_stateVariable, &s_serviceStateTable>.
"UPnPBase.h", line 375: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPDevice*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPDevice*>>>::insert(const std::pair<const std::string, CUPnPDevice*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPDevice*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPDevice*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPDevice, &s_device, &s_deviceList>.
"UPnPBase.h", line 482: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPService*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPService*>>>::insert(const std::pair<const std::string, CUPnPService*>&).
"UPnPBase.h", line 161: Where: While specializing "std::map<const std::string, CUPnPService*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPService*>>>".
"UPnPBase.h", line 161: Where: Specialized in CXML_List<CUPnPService, &s_service, &s_serviceList>.
"UPnPBase.h", line 483: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPRootDevice*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPRootDevice*>>>::insert(const std::pair<const std::string, CUPnPRootDevice*>&).
"UPnPBase.h", line 561: Where: While specializing "std::map<const std::string, CUPnPRootDevice*, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPRootDevice*>>>".
"UPnPBase.h", line 561: Where: Specialized in non-template code.
"/opt/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map<const std::string, CUPnPPortMapping, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPPortMapping>>>::insert(const std::pair<const std::string, CUPnPPortMapping>&).
"UPnPBase.h", line 563: Where: While specializing "std::map<const std::string, CUPnPPortMapping, std::less<const std::string>, std::allocator<std::pair<const std::string, CUPnPPortMapping>>>".
"UPnPBase.h", line 563: Where: Specialized in non-template code.
Also found another build error for "amulesig_out.AddLine(wxT(VERSION " " SVNDATE));" in amule.cpp. Not sure how to fix that.
Anyway, attachment is all the changes I did to make it compile.
-
The build error for "amulesig_out.AddLine(wxT(VERSION " " SVNDATE));" is as below:
"amule.cpp", line 1246: Error: Strings of differing character types cannot be catenated.
"amule.cpp", line 1246: Error: Strings of differing character types cannot be catenated.
BTW, I still have crash for aMule 2.2.2 built with Sun Studio on Solaris Nevada b98 when the download finishes for one file. The stack is attached. Something wrong with wxWidgets or gtk?
-
Build error is fixed in tomorrow's tarball:
#ifdef SVNDATE
amulesig_out.AddLine(CFormat(wxT("%s %s")) % wxT(VERSION) % wxT(SVNDATE));
#else
amulesig_out.AddLine(wxT(VERSION));
#endif
-
You may also try if the change below works, as it must be faster/lighter than the one using CFormat.
- amulesig_out.AddLine(wxT(VERSION " " SVNDATE));
+ amulesig_out.AddLine(wxT(VERSION) wxT(" ") wxT(SVNDATE));
I'd also like to ask you try if the following change works:
- result.assign(m_servers.begin(), m_servers.end());
+ result = m_servers;
I'll see what I can do to make that broken STL implementation work.
(I'll provide a real patch when I'll get near the code again.)
-
GonoszTopi, the first code snippet works. The second doesn't, with the error below:
"ServerList.cpp", line 880: Error: Cannot assign std::list<CServer*> to std::vector<CServer*> without "std::vector<CServer*>::operator=(const std::vector<CServer*>&)";.
"ServerList.cpp", line 931: Error: Cannot assign const std::list<CServer*> to std::vector<const CServer*> without "std::vector<const CServer*>::operator=(const std::vector<const CServer*>&)";.
-
Ok, the first snippet has been committed to SVN.
Now, I again ask you to test some code (also provided as an attachment):
Index: ServerList.cpp
===================================================================
--- ServerList.cpp (revision 9142)
+++ ServerList.cpp (working copy)
@@ -916,7 +916,9 @@
{
std::vector<const CServer*> result;
result.reserve(m_servers.size());
- result.assign(m_servers.begin(), m_servers.end());
+ for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) {
+ result.push_back(*it);
+ }
return result;
}
This does basically the same your patch did but without assuming that iterators are pointers. For your tests you may change const_iterator to iterator, and result.push_back(*it); to result.insert(result.end(), *it); Please post the results of the test.
P.S.: The removal of const from std::map key types is the opposite of what they suggest at http://docs.sun.com/source/820-4155/c++_faq.html#LibComp2
-
GonoszTopi, tried the patch on my box here, it works fine. However, if I change const_iterator to iterator, I'll get the error below:
"ServerList.cpp", line 924: Error: Cannot use std::list<CServer*>::const_iterator to initialize std::list<CServer*>::iterator.
"ServerList.cpp", line 924: Error: The operation "std::list<CServer*>::iterator != std::list<CServer*>::const_iterator" is illegal.
And both result.push_back(*it); and result.insert(result.end(), *it); works with Sun Studio 12 here.
Attach is the patch.
-
I'm not sure we want to muddy the sourcecode because of one incomplete STL implementation in one specific IDE in a very rarely used platform.
-
Kry, I know it's possible to build aMule on Solaris with GCC and it runs. But in my opinion, if we can make it build with Sun Studio, it'll be easier to get it accepted by the OpenSolaris community.
I'm not quite sure about aMule's target audiences. What I know is that OpenSolaris is a potential choice for open source users. Even though it's not as popular as Linux distributions now. I guess that there must be some guide-line for aMule's patch acceptance. Something like to make the code even more cross-platform and avoid obscurity. So I personally hope that the change will follow the line and could still provide certain supports for a range of desktop users.
Anyway, thanks for the help I got from here.
-
As long as we're replacing problematic passages with equally readable code which doesn't impact performance for other platforms, I see no reason not to make these changes.
Thank you for your efforts, Alfred, I appreciate them. Thanks to another motivated user, we've recently gained IRIX support - we need people like you to support less popular platforms.
-
Good cop, bad cop.
-
As I understand the situation, we currently support the Sun Studio 12 compiler, but we don't support its default STL implementation, libCstd. However, the compiler can be told to use a full STL implementation, STLport.
Therefore I suggest the following:
1. Use the -library=stlport4 compiler switch to compile aMule. You need to compile the dependant C++ libraries with this switch too, i.e. wxWidgets and Crypto++
2. Encourage OpenSolaris developers to make STLport the default STL implementation.
3. In the wiki (http://www.amule.org/wiki/index.php/HowTo_compile_on_Solaris) provide a full patch (or a link to this forum topic) to compile with libCstd, for those that want to.
-
GonoszTopi, a good news about Sun Studio's C++ support is that: ARC case PSARC 2008/549 (http://opensolaris.org/os/community/arc/caselog/2008/549/) has been filed to make Apache libstdcxx the required C++ runtime library for Solaris components. Unlike libCstd and STLport, it fully conforms to the C++ standard. Hopefully, this could replace the old libCstd in Solaris soon.
As for now, I'm fine to keep the patch specifically for Solaris. Anyway, thanks for the help, guys!
-
guys, just want to give some update for aMule on Solaris built with Sun Studio 12. The spec file to build aMule 2.2.2 is ready here: https://pkgbuild.svn.sourceforge.net/svnroot/pkgbuild/spec-files-extra/trunk/SFEamule.spec, and the patch: https://pkgbuild.svn.sourceforge.net/svnroot/pkgbuild/spec-files-extra/trunk/patches/amule-01-sun-studio12.patch. I'll try to bump it to 2.2.3 later.
As I mentioned in the previous post, the Apache C++ standard library will be integrated soon. All the C++ applications/libraries in OpenSolaris will change to link against it for better C++ STL support.
One problem with the current binary is that when a download finishes, it crashes with the core stack below:
fe303d3d mutex_unlock_queue (92b6288, 0, 8042efc, fe30505a) + 4d
fe305177 mutex_unlock (92b6288, 9601238, 8042f34, fdc2be82) + 12b
fdc2bed0 g_atomic_int_get (9312884, 50, 939e438, fdd15b42) + 5c
fdd15b7b g_object_unref (9312880, 1, 8042f8c, 0) + 47
fe080cf5 gtk_widget_style_get_valist (9312880, fe16588c, 8043014, fe080d50) + 2ad
fe080d75 gtk_widget_style_get (9312880, fe16588c, 8043028, 0) + 3d
fdec87ea gtk_button_get_props (9312880, 804308c, 0, 804309c, 0, 0) + 10e
fdec899e gtk_button_size_allocate (9312880, 804348c, 933a428, fdd2740a) + 46
fdd27461 g_cclosure_marshal_VOID__BOXED (93a7268, 0, 2, 970b8a0, 8043284, fdec8958) + 65
fdd0f6c6 g_type_class_meta_marshal (93a7268, 0, 2, 970b8a0, 8043284, 80) + 46
fdd0f3b1 g_closure_invoke (93a7268, 0, 2, 970b8a0, 8043284, 96073e8) + b1
fdd25434 signal_emit_unlocked_R (9332838, 0, 9312880, 0, 970b8a0, 9312880) + 8e8
fdd2473c g_signal_emit_valist (9312880, 10, 0, 8043478) + 9c8
fdd2493d g_signal_emit (9312880, 10, 0, 804348c) + 25
fe07923e gtk_widget_size_allocate (9312880, 80434dc, 8043504, fe759b23) + 1da
fe759b7d gtk_pizza_allocate_child (93b4e68, 9604030, 8043544, fe759507) + a9
fe7595ef gtk_pizza_size_allocate (93b4e68, 80438fc, 933a428, fdd2740a) + 1a3
fdd27461 g_cclosure_marshal_VOID__BOXED (93a7268, 0, 2, 970b6c8, 80436f4, fe75944c) + 65
fdd0f6c6 g_type_class_meta_marshal (93a7268, 0, 2, 970b6c8, 80436f4, 80) + 46
fdd0f3b1 g_closure_invoke (93a7268, 0, 2, 970b6c8, 80436f4, 1) + b1
fdd25434 signal_emit_unlocked_R (9332838, 0, 93b4e68, 0, 970b6c8, 93b4e68) + 8e8
fdd2473c g_signal_emit_valist (93b4e68, 10, 0, 80438e8) + 9c8
fdd2493d g_signal_emit (93b4e68, 10, 0, 80438fc) + 25
fe07923e gtk_widget_size_allocate (93b4e68, 804397c, 80439a4, fdfc3afe) + 1da
fdfc3bd1 gtk_scrolled_window_size_allocate (930f410, 8043d5c, 933a428, fdd2740a) + 141
fdd27461 g_cclosure_marshal_VOID__BOXED (93a7268, 0, 2, 96bd3b8, 8043b54, fdfc3a90) + 65
fdd0f6c6 g_type_class_meta_marshal (93a7268, 0, 2, 96bd3b8, 8043b54, 80) + 46
......
Will try to build aMule and all the dependent libraries with Apache C++ library to see whether the problem is fixed.