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

Reply via email to