You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2021/11/01 08:14:00 UTC

[jira] [Commented] (PROTON-2441) [cpp] Crash upon reconnect when user passed empty vector to connection_options::failover_urls

    [ https://issues.apache.org/jira/browse/PROTON-2441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17436672#comment-17436672 ] 

ASF GitHub Bot commented on PROTON-2441:
----------------------------------------

DreamPearl commented on pull request #338:
URL: https://github.com/apache/qpid-proton/pull/338#issuecomment-956023315


   @gemmellr @jiridanek Can you please take a look. 
   The cause of segfault was that when we were passing empty vector to connection_options::failoverurls, the current_url was getting set to 0. And on the basis of the value of current_url i.e. 0, it was picking failover_urls instead of reconnect_urls. As it was trying to access failover_urls which was empty, it leads to segfault.
   Deprecated code was able to handle the empty vector, non-deprecated wasn't.
   Alternatively, I tried this: https://github.com/apache/qpid-proton/commit/50d8342c4932da698389dd991760c607de7f79f5 


-- 
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: dev-unsubscribe@qpid.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> [cpp] Crash upon reconnect when user passed empty vector to connection_options::failover_urls
> ---------------------------------------------------------------------------------------------
>
>                 Key: PROTON-2441
>                 URL: https://issues.apache.org/jira/browse/PROTON-2441
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: cpp-binding
>         Environment: Linux fedora 5.11.12-300.fc34.x86_64 #1 SMP Wed Apr 7 16:31:13 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
> NAME=Fedora
> VERSION="34 (Workstation Edition)"
> ID=fedora
> VERSION_ID=34
> VERSION_CODENAME=""
> PLATFORM_ID="platform:f34"
>            Reporter: Rakhi Kumari
>            Assignee: Rakhi Kumari
>            Priority: Major
>
> {noformat}
> $ gdb ./reconnect_client
> (gdb) run amqp://127.0.0.1 examples 1
> Starting program: /home/rkumari/repos/qpid-proton/build/cpp/examples/reconnect_client amqp://127.0.0.1 examples 1
> Missing separate debuginfos, use: dnf debuginfo-install glibc-2.33-5.fc34.x86_64
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> Retries: 0 Delay: 0 Trying: NO URL@0 SZ: 0
>  *Program received signal SIGSEGV, Segmentation fault.*
>  0x00007ffff7cf1104 in std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib64/libstdc++.so.6
> (gdb) backtrace
>  #0 0x00007ffff7cf1104 in std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib64/libstdc++.so.6
>  #1 0x00007ffff7e984b5 in proton::container::impl::reconnect (this=0x43c640, pnc=0x43df10) at /home/rkumari/repos/qpid-proton/cpp/src/proactor_container_impl.cpp:241
>  #2 0x00007ffff7ead66d in std::__invoke_impl<void, void (proton::container::impl::*&)(pn_connection_t*), proton::container::impl*&, pn_connection_t*&> (__f=
>  @0x446060: (void (proton::container::impl::*)(proton::container::impl * const, pn_connection_t *)) 0x7ffff7e97ed4 <proton::container::impl::reconnect(pn_connection_t*)>, __t=@0x446078: 0x43c640)
>  at /usr/include/c++/11/bits/invoke.h:74
>  #3 0x00007ffff7ead1d6 in std::__invoke<void (proton::container::impl::*&)(pn_connection_t*), proton::container::impl*&, pn_connection_t*&> (__fn=
>  @0x446060: (void (proton::container::impl::*)(proton::container::impl * const, pn_connection_t *)) 0x7ffff7e97ed4 <proton::container::impl::reconnect(pn_connection_t*)>) at /usr/include/c++/11/bits/invoke.h:96
>  #4 0x00007ffff7eacd73 in std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) (this=0x446060, __args=...)
>  at /usr/include/c++/11/functional:420
>  #5 0x00007ffff7eac7a6 in std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>::operator()<, void>() (this=0x446060) at /usr/include/c++/11/functional:503
>  #6 0x00007ffff7eaba21 in std::__invoke_impl<void, std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>&>(std::__invoke_other, std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>&) (__f=...) at /usr/include/c++/11/bits/invoke.h:61
>  #7 0x00007ffff7eaa497 in std::__invoke_r<void, std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>&>(std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)>&) (__fn=...) at /usr/include/c++/11/bits/invoke.h:154
>  #8 0x00007ffff7ea8cdf in std::_Function_handler<void (), std::_Bind<void (proton::container::impl::*(proton::container::impl*, pn_connection_t*))(pn_connection_t*)> >::_M_invoke(std::_Any_data const&) (__functor=...)
>  at /usr/include/c++/11/bits/std_function.h:291
>  #9 0x00007ffff7e9f12e in std::function<void ()>::operator()() const (this=0x445fa8) at /usr/include/c++/11/bits/std_function.h:560
>  #10 0x00007ffff7e96050 in proton::internal::v11::work::operator() (this=0x445fa8) at /home/rkumari/repos/qpid-proton/cpp/include/proton/work_queue.hpp:283
>  #11 0x00007ffff7e9ba47 in proton::container::impl::run_timer_jobs (this=0x43c640) at /home/rkumari/repos/qpid-proton/cpp/src/proactor_container_impl.cpp:536
>  #12 0x00007ffff7e9be69 in proton::container::impl::dispatch (this=0x43c640, event=0x43f160) at /home/rkumari/repos/qpid-proton/cpp/src/proactor_container_impl.cpp:567
>  #13 0x00007ffff7e9db82 in proton::container::impl::thread (this=0x43c640) at /home/rkumari/repos/qpid-proton/cpp/src/proactor_container_impl.cpp:755
>  #14 0x00007ffff7e9e8cc in proton::container::impl::run (this=0x43c640, threads=1) at /home/rkumari/repos/qpid-proton/cpp/src/proactor_container_impl.cpp:801
>  #15 0x00007ffff7e93bf3 in proton::container::run (this=0x7fffffffdf28) at /home/rkumari/repos/qpid-proton/cpp/src/container.cpp:92
>  #16 0x000000000040ce2b in main (argc=4, argv=0x7fffffffe058) at /home/rkumari/repos/qpid-proton/cpp/examples/reconnect_client.cpp:135
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org