swebb2066 commented on issue #429: URL: https://github.com/apache/logging-log4cxx/issues/429#issuecomment-2484568633
It seems the bug was somewhat accidently fixed by associating the socket with a different APR memory pool. In the current version the socket is closed by APR as a part of a memory pool cleanup. The stack from the current version at the call to connect and the subsequent call to close is as follows: ``` Breakpoint 1, __libc_connect (fd=3, addr=..., len=16) at ../sysdeps/unix/sysv/linux/connect.c:24 24 ../sysdeps/unix/sysv/linux/connect.c: No such file or directory. (gdb) bt #0 __libc_connect (fd=3, addr=..., len=16) at ../sysdeps/unix/sysv/linux/connect.c:24 #1 0x00005555556ed509 in apr_socket_connect () #2 0x00005555556d255b in log4cxx::helpers::APRSocket::APRSocket (this=0x555555818fe0, address=std::shared_ptr<log4cxx::helpers::InetAddress> (use count 2, weak count 0) = {...}, port=1234) at /home/stephen/source/logging-log4cxx/src/main/cpp/aprsocket.cpp:73 #3 0x00005555556d1ae1 in std::make_unique<log4cxx::helpers::APRSocket, std::shared_ptr<log4cxx::helpers::InetAddress>&, int&> () at /usr/include/c++/11/bits/unique_ptr.h:962 #4 0x00005555556d1627 in log4cxx::helpers::Socket::create (address=std::shared_ptr<log4cxx::helpers::InetAddress> (use count 2, weak count 0) = {...}, port=1234) at /home/stephen/source/logging-log4cxx/src/main/cpp/socket.cpp:49 #5 0x000055555569329a in log4cxx::net::SocketAppenderSkeleton::connect (this=0x555555818f80, p=...) at /home/stephen/source/logging-log4cxx/src/main/cpp/socketappenderskeleton.cpp:96 #6 0x0000555555692fae in log4cxx::net::SocketAppenderSkeleton::activateOptions (this=0x555555818f80, p=...) at /home/stephen/source/logging-log4cxx/src/main/cpp/socketappenderskeleton.cpp:66 #7 0x00005555555d2d20 in log4cxx::net::XMLSocketAppender::XMLSocketAppender (this=0x555555818f80, host="localhost", port1=1234, __in_chrg=<optimised out>, __vtt_parm=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/xmlsocketappender.cpp:82 #8 0x000055555558c7ad in std::construct_at<log4cxx::net::XMLSocketAppender, char const (&) [10], int> (__location=0x555555818f80) at /usr/include/c++/11/bits/stl_construct.h:97 #9 0x000055555558c879 in std::allocator_traits<std::allocator<log4cxx::net::XMLSocketAppender> >::construct<log4cxx::net::XMLSocketAppender, char const (&) [10], int> (__a=..., __p=0x555555818f80) at /usr/include/c++/11/bits/alloc_traits.h:518 #10 0x000055555558c2af in std::_Sp_counted_ptr_inplace<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<char const (&) [10], int> ( this=0x555555818f70, __a=...) at /usr/include/c++/11/bits/shared_ptr_base.h:519 #11 0x000055555558bd93 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe208, __p=@0x7fffffffe200: 0x0, __a=...) at /usr/include/c++/11/bits/shared_ptr_base.h:650 #12 0x000055555558bb28 in std::__shared_ptr<log4cxx::net::XMLSocketAppender, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe200, __tag=...) at /usr/include/c++/11/bits/shared_ptr_base.h:1342 #13 0x000055555558b7fd in std::shared_ptr<log4cxx::net::XMLSocketAppender>::shared_ptr<std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe200, __tag=...) at /usr/include/c++/11/bits/shared_ptr.h:409 #14 0x000055555558b2eb in std::allocate_shared<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (__a=...) at /usr/include/c++/11/bits/shared_ptr.h:863 #15 0x000055555558a8e1 in std::make_shared<log4cxx::net::XMLSocketAppender, char const (&) [10], int> () at /usr/include/c++/11/bits/shared_ptr.h:879 #16 0x0000555555589e8a in main (argc=1, argv=0x7fffffffe3a8) at /home/stephen/source/logging-log4cxx/src/examples/cpp/testSocketAppender.cpp:9 (gdb) c Continuing. Breakpoint 2, __GI___close (fd=3) at ../sysdeps/unix/sysv/linux/close.c:26 26 ../sysdeps/unix/sysv/linux/close.c: No such file or directory. (gdb) bt #0 __GI___close (fd=3) at ../sysdeps/unix/sysv/linux/close.c:26 #1 0x00005555556eca29 in socket_cleanup () #2 0x00005555556e946f in run_cleanups () #3 0x00005555556e82a6 in apr_pool_destroy () #4 0x00005555555bf5c7 in log4cxx::helpers::Pool::~Pool (this=0x55555581b6e0, __in_chrg=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/pool.cpp:46 #5 0x00005555556d315c in log4cxx::helpers::APRSocket::APRSocketPriv::~APRSocketPriv (this=0x55555581b6c0, __in_chrg=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/aprsocket.cpp:31 #6 0x00005555556d3188 in log4cxx::helpers::APRSocket::APRSocketPriv::~APRSocketPriv (this=0x55555581b6c0, __in_chrg=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/aprsocket.cpp:31 #7 0x00005555556d1cc2 in std::default_delete<log4cxx::helpers::Socket::SocketPrivate>::operator() (this=0x555555818fe8, __ptr=0x55555581b6c0) at /usr/include/c++/11/bits/unique_ptr.h:85 #8 0x00005555556d1a5e in std::unique_ptr<log4cxx::helpers::Socket::SocketPrivate, std::default_delete<log4cxx::helpers::Socket::SocketPrivate> >::~unique_ptr (this=0x555555818fe8, __in_chrg=<optimised out>) at /usr/include/c++/11/bits/unique_ptr.h:361 #9 0x00005555556d1546 in log4cxx::helpers::Socket::~Socket (this=0x555555818fe0, __in_chrg=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/socket.cpp:36 #10 0x00005555556d2665 in log4cxx::helpers::APRSocket::APRSocket (this=0x555555818fe0, address=std::shared_ptr<log4cxx::helpers::InetAddress> (use count 2, weak count 0) = {...}, port=1234) at /home/stephen/source/logging-log4cxx/src/main/cpp/aprsocket.cpp:79 #11 0x00005555556d1ae1 in std::make_unique<log4cxx::helpers::APRSocket, std::shared_ptr<log4cxx::helpers::InetAddress>&, int&> () at /usr/include/c++/11/bits/unique_ptr.h:962 #12 0x00005555556d1627 in log4cxx::helpers::Socket::create (address=std::shared_ptr<log4cxx::helpers::InetAddress> (use count 2, weak count 0) = {...}, port=1234) at /home/stephen/source/logging-log4cxx/src/main/cpp/socket.cpp:49 #13 0x000055555569329a in log4cxx::net::SocketAppenderSkeleton::connect (this=0x555555818f80, p=...) at /home/stephen/source/logging-log4cxx/src/main/cpp/socketappenderskeleton.cpp:96 #14 0x0000555555692fae in log4cxx::net::SocketAppenderSkeleton::activateOptions (this=0x555555818f80, p=...) at /home/stephen/source/logging-log4cxx/src/main/cpp/socketappenderskeleton.cpp:66 #15 0x00005555555d2d20 in log4cxx::net::XMLSocketAppender::XMLSocketAppender (this=0x555555818f80, host="localhost", port1=1234, __in_chrg=<optimised out>, __vtt_parm=<optimised out>) at /home/stephen/source/logging-log4cxx/src/main/cpp/xmlsocketappender.cpp:82 #16 0x000055555558c7ad in std::construct_at<log4cxx::net::XMLSocketAppender, char const (&) [10], int> (__location=0x555555818f80) at /usr/include/c++/11/bits/stl_construct.h:97 #17 0x000055555558c879 in std::allocator_traits<std::allocator<log4cxx::net::XMLSocketAppender> >::construct<log4cxx::net::XMLSocketAppender, char const (&) [10], int> (__a=..., __p=0x555555818f80) at /usr/include/c++/11/bits/alloc_traits.h:518 #18 0x000055555558c2af in std::_Sp_counted_ptr_inplace<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<char const (&) [10], int> ( this=0x555555818f70, __a=...) at /usr/include/c++/11/bits/shared_ptr_base.h:519 #19 0x000055555558bd93 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe208, __p=@0x7fffffffe200: 0x0, __a=...) at /usr/include/c++/11/bits/shared_ptr_base.h:650 #20 0x000055555558bb28 in std::__shared_ptr<log4cxx::net::XMLSocketAppender, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe200, __tag=...) at /usr/include/c++/11/bits/shared_ptr_base.h:1342 #21 0x000055555558b7fd in std::shared_ptr<log4cxx::net::XMLSocketAppender>::shared_ptr<std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (this=0x7fffffffe200, __tag=...) at /usr/include/c++/11/bits/shared_ptr.h:409 #22 0x000055555558b2eb in std::allocate_shared<log4cxx::net::XMLSocketAppender, std::allocator<log4cxx::net::XMLSocketAppender>, char const (&) [10], int> (__a=...) at /usr/include/c++/11/bits/shared_ptr.h:863 #23 0x000055555558a8e1 in std::make_shared<log4cxx::net::XMLSocketAppender, char const (&) [10], int> () at /usr/include/c++/11/bits/shared_ptr.h:879 #24 0x0000555555589e8a in main (argc=1, argv=0x7fffffffe3a8) at /home/stephen/source/logging-log4cxx/src/examples/cpp/testSocketAppender.cpp:9 (gdb) ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org