aMule Forum
English => Backtraces => Topic started by: jpv950 on December 08, 2008, 08:06:22 PM
-
Using Amule 2.2.2 compiled from source on Ubuntu Intrepid AMD64.
Didn't crash anything but I couldn't connect to the webserver.
21:31:38: Debug: WebInterface.cpp(95): assert "(fd > 2) && (fd < 1024)" failed in AddSocket().
[Debug] Generating a stack trace... please wait[Thread 0x415c6950 (LWP 20728) exited]
WebInterface.cpp(95): assert "(fd > 2) && (fd < 1024)" failed in AddSocket().
Call stack:
[00] wxOnAssert(wchar_t const*, int, char const*, wchar_t const*, wchar_t const*)
[01] CSocketSet::AddSocket(GSocket*) /home/jpv/src/aMule-2.2.2/src/webserver/src/WebInterface.cpp:97
[02] CWebserverGSocketFuncTable::AddSocket(GSocket*, GSocketEvent) /home/jpv/src/aMule-2.2.2/src/webserver/src/WebInterface.cpp:191
[03] CWebserverGSocketFuncTable::Install_Callback(GSocket*, GSocketEvent) /home/jpv/src/aMule-2.2.2/src/webserver/src/WebInterface.cpp:254
[04] CWebserverGSocketFuncTable::Enable_Events(GSocket*) /home/jpv/src/aMule-2.2.2/src/webserver/src/WebInterface.cpp:264
[05] GSocket::Connect(GSocketStream)
[06] wxSocketClient::DoConnect(wxSockAddress&, wxSockAddress*, bool)
[07] CECMuleSocket::InternalConnect(unsigned int, unsigned short, bool) /home/jpv/src/aMule-2.2.2/src/libs/ec/cpp/ECMuleSocket.cpp:111
[08] CECSocket::ConnectSocket(unsigned int, unsigned short) /home/jpv/src/aMule-2.2.2/src/libs/ec/cpp/ECSocket.cpp:284
[09] CECMuleSocket::ConnectSocket(wxIPV4address&) /home/jpv/src/aMule-2.2.2/src/libs/ec/cpp/ECMuleSocket.cpp:103
[10] CRemoteConnect::ConnectToCore(wxString const&, int, wxString const&, wxString const&, wxString const&, wxString const&) /home/jpv/src/aMule-2.2.2/src/libs/ec/cpp/RemoteConnect.cpp:104
[11] CaMuleExternalConnector::ConnectAndRun(wxString const&, wxString const&) /home/jpv/src/aMule-2.2.2/src/webserver/src/../../../src/ExternalConnector.cpp:398
-
Known issue, and will be fixed in 2.2.3.
Until then you may change the condition 'fd > 2' to 'fd > 0' in WebInterface.cpp at lines 95 and 116.
-
Thanks for the heads up. I still have this problem with SVN r9248 and your fix doesn't seem to work, unless I did something wrong.
05:54:03: Debug: WebInterface.cpp(95): assert "(fd > 0) && (fd < 1024)" failed in AddSocket().
[Debug] Generating a stack trace... please waitHost: amule.sourceforge.net:80
URL: http://amule.sourceforge.net/lastversion
Response: 200 (Error: 0)
Download size: 6
HTTP download thread ended
WebInterface.cpp(95): assert "(fd > 0) && (fd < 1024)" failed in AddSocket().
Call stack:
[00] wxOnAssert(wchar_t const*, int, char const*, wchar_t const*, wchar_t const*)
[01] CSocketSet::AddSocket(GSocket*) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:97
[02] CWebserverGSocketFuncTable::AddSocket(GSocket*, GSocketEvent) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:191
[03] CWebserverGSocketFuncTable::Install_Callback(GSocket*, GSocketEvent) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:254
[04] CWebserverGSocketFuncTable::Enable_Events(GSocket*) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:264
[05] GSocket::Connect(GSocketStream)
[06] wxSocketClient::DoConnect(wxSockAddress&, wxSockAddress*, bool)
[07] CECMuleSocket::InternalConnect(unsigned int, unsigned short, bool) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/libs/ec/cpp/ECMuleSocket.cpp:111
[08] CECSocket::ConnectSocket(unsigned int, unsigned short) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/libs/ec/cpp/ECSocket.cpp:286
[09] CECMuleSocket::ConnectSocket(wxIPV4address&) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/libs/ec/cpp/ECMuleSocket.cpp:103
[10] CRemoteConnect::ConnectToCore(wxString const&, int, wxString const&, wxString const&, wxString const&, wxString const&) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/libs/ec/cpp/RemoteConnect.cpp:104
[11] CaMuleExternalConnector::ConnectAndRun(wxString const&, wxString const&) /home/jpv/src/aMule-SVN-r9248-RELEASE-2_2_X/src/webserver/src/../../../src/ExternalConnector.cpp:398
-
As you may see, there are 2 conditions that triggers this assertion:
* fd < 0 (technically possible since fd is an integer)
* fd > 1024
So, either you have more than 1023 sockets opened at the same time, or something got completely broken. Can you do "bt full" to see what value fd have?
-
I got it. The assertion condition should be changed to fd >= 0, otherwise the webserver crashes when launched by amule itself.
Two questions:
Shouldn't this be changed in SVN already, according to GonoszTopi comments? I don't see it. Also, like I said, it must be changed to fd>=0 and not fd>0 (since stdin can be piped, etc).
Is the second assertion condition really correct, fd < FD_SETSIZE? FD_SETSIZE seems to be the array length for storing file descriptors, why would that be related to the file descriptor value itself? Just checking on this.
-
Oops, spoke too soon, another webserver crash on a different assertion when connecting. I'll take a better look at it.
-
Is the second assertion condition really correct, fd < FD_SETSIZE? FD_SETSIZE seems to be the array length for storing file descriptors, why would that be related to the file descriptor value itself? Just checking on this.
You should be checking man page for select() call.
-
I got it. The assertion condition should be changed to fd >= 0, otherwise the webserver crashes when launched by amule itself.
My fault, I skipped the '=' sign somehow.
Shouldn't this be changed in SVN already, according to GonoszTopi comments? I don't see it.
It was already, but only in trunk. Since rev. 9252, it's in the 2.2x branch too.
-
So with rev. 9252 that problem is fixed but I have the new assertion failure I just mentioned.
00:10:56: Debug: WebInterface.cpp(122): assert "m_fds[i] == fd" failed in RemoveSocket().
[Debug] Generating a stack trace... please waitWebInterface.cpp(122): assert "m_fds[i] == fd" failed in RemoveSocket().
Call stack:
[00] wxOnAssert(wchar_t const*, int, char const*, wchar_t const*, wchar_t const*)
[01] CSocketSet::RemoveSocket(GSocket*) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:123
[02] CWebserverGSocketFuncTable::RemoveSocket(GSocket*, GSocketEvent) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:202
[03] CWebserverGSocketFuncTable::Uninstall_Callback(GSocket*, GSocketEvent) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/WebInterface.cpp:259
[04] GSocket::Read(char*, int)
[05] wxSocketBase::_Read(void*, unsigned int)
[06] wxSocketBase::Read(void*, unsigned int)
[07] CECMuleSocket::InternalRead(void*, unsigned long) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/libs/ec/cpp/ECMuleSocket.h:58
[08] CECSocket::SocketRead(void*, unsigned long) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/libs/ec/cpp/ECSocket.h:199
[09] CQueuedData::ReadFromSocketAll(CECSocket*, unsigned long) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/libs/ec/cpp/ECSocket.cpp:207
[10] CECSocket::SendRecvPacket(CECPacket const*) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/libs/ec/cpp/ECSocket.cpp:311
[11] CaMuleExternalConnector::SendRecvMsg_v2(CECPacket const*) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/../../ExternalConnector.h:138
[12] php_get_amule_categories(PHP_VALUE_NODE*) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_amule_lib.cpp:294
[13] php_run_func_call /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_syntree.cpp:1759
[14] php_expr_eval /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_syntree.cpp:1325
[15] php_expr_eval /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_syntree.cpp:1273
[16] php_execute /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_syntree.cpp:1792
[17] CPhPLibContext::Execute(CWriteStrBuffer*) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_core_lib.cpp:548
[18] CPhpFilter /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/php_core_lib.cpp:626
[19] CScriptWebServer::ProcessPhpRequest(char const*, CSession*, long&) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/WebServer.cpp:1798
[20] CScriptWebServer::ProcessURL(ThreadData) /home/jpv/src/aMule-SVN-r9252-RELEASE-2_2_X/src/webserver/src/WebServer.cpp:1917
This happens when connecting to the webserver.
-
Still only crashes when launching amuleweb automatically with amule.