linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #01277
[Bug 590359] Re: Socket::resolve isn't thread safe
The text leading up to this was:
--------------------------
|=== modified file 'dcpp/Socket.cpp'
|--- dcpp/Socket.cpp 2010-02-11 21:44:13 +0000
|+++ dcpp/Socket.cpp 2010-06-06 10:00:06 +0000
--------------------------
Patching file dcpp/Socket.cpp using Plan A...
Hunk #1 succeeded at 530.
Hmm... Ignoring the trailing garbage.
done
dcpp\Socket.cpp:533:18: error: aggregate 'dcpp::Socket::resolve(const std::string&)::addrinfo hints'
has incomplete type and cannot be defined
dcpp\Socket.cpp:535:42: error: invalid application of 'sizeof' to incomplete type 'dcpp::Socket::res
olve(const std::string&)::addrinfo'
dcpp\Socket.cpp:538:53: error: 'getaddrinfo' was not declared in this scope
dcpp\Socket.cpp:539:13: error: invalid use of incomplete type 'struct dcpp::Socket::resolve(const st
d::string&)::addrinfo'
dcpp\Socket.cpp:533:9: error: forward declaration of 'struct dcpp::Socket::resolve(const std::string
&)::addrinfo'
dcpp\Socket.cpp:540:46: error: invalid use of incomplete type 'struct dcpp::Socket::resolve(const st
d::string&)::addrinfo'
dcpp\Socket.cpp:533:9: error: forward declaration of 'struct dcpp::Socket::resolve(const std::string
&)::addrinfo'
dcpp\Socket.cpp:542:22: error: 'freeaddrinfo' was not declared in this scope
scons: *** [build\debug-mingw\dcpp\Socket.o] Error 1
scons: building terminated because of errors.
--
Socket::resolve isn't thread safe
https://bugs.launchpad.net/bugs/590359
You received this bug notification because you are a member of LinuxDC++
Team, which is subscribed to LinuxDC++.
Status in DC++: New
Status in Linux DC++: Confirmed
Bug description:
gethostbyname() shouldn't be called from multiple threads in Linux. As it may return pointer to static data that will be overwritten by the next call. (And based on the few stacktraces I've seen lately it is overwritten.) Windows seems to allocate the data for gethostbyname from thread local storage, so that will probably explain why it took so long to be reported.
References