Crash with quickfix 1.13.3 in dtor of FieldMap

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Crash with quickfix 1.13.3 in dtor of FieldMap

Harwinder Sidhu
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html
QuickFIX Support: http://www.quickfixengine.org/services.html


Hi,

We are facing a crash in the quickfix library, when we are receivng a very large message from the counterparty. I put a debug build on the machine and the crash dump is below the message.

I am using quickfix version 1.13.3, gcc 4.4.7 on CentOS 6.x and when I looked at FieldMap:174, it is a delete statement.

A similar issue with allocators is probably reported here:
http://sourceforge.net/p/quickfix/mailman/message/10833533/

which seems to be have been fixed in 1.12.4. However, since I’m using a later version, this should not be the case here.

The configure script on my machine gives the following output related to the allocators:

checking for boost::pool_allocator... yes
checking for boost::fast_pool_allocator... yes
checking __gnu_cxx::__pool_alloc... yes
checking __gnu_cxx::__mt_alloc... yes
checking __gnu_cxx::bitmap_allocator... yes

Any pointers on how can I go about fixing this issue?

Best Regards,
Harwinder


Stack Trace:

(gdb) bt
#0  0x00007ffff6858084 in FIX::FieldMap::clear (this=0x7ffff5271630) at FieldMap.cpp:174
#1  0x00007ffff6858a49 in FIX::FieldMap::~FieldMap (this=0x7ffff5271630, __in_chrg=<value optimized out>) at FieldMap.cpp:35
#2  0x000000000061bf66 in FIX::Message::~Message (this=0x7ffff5271630, __in_chrg=<value optimized out>)
    at /usr/local/include/quickfix/Message.h:58
#3  0x00007ffff6806d14 in FIX::Session::next (this=0x9c6480, msg=    "8=FIX.4.4\001\071=166387\001\063\065=W\001\063\064=3\001\064\071=BCSGATEWAY\001\065\062=20151109-21:10:23.243\001\065\066=MDFOREX\001\065\065=LAN\001\061\066\067=CS\001\062\060\067=XSGO\001\062\066\062=1\001\062\066\070=935\001\062\066\071=5\001\062\067\060=3998.8\001\062\067\062=20151109\001\062\070\066=6\001\062\071\060=1\001\062\066\071=7\001\062\067\060=4150\001\062\071\060=1\001\062\066\071=8\001\062\067\060=3950.1\001\062\071\060="..., timeStamp=..., queued=<value optimized out>) at Session.cpp:1309
#4  0x00007ffff682fecc in FIX::SocketConnection::readMessages (this=0x7fffe8000f90, s=...) at SocketConnection.cpp:234
#5  0x00007ffff682fff5 in FIX::SocketConnection::read (this=0x7fffe8000f90, s=...) at SocketConnection.cpp:124
#6  0x00007ffff6821e51 in FIX::ConnectorWrapper::onEvent (this=0x7ffff5271d60, socket=23) at SocketConnector.cpp:67
#7  0x00007ffff682e03d in FIX::SocketMonitor::processReadSet (this=0x9cb0a0, strategy=..., readSet=...) at SocketMonitor.cpp:287
#8  0x00007ffff682edcd in FIX::SocketMonitor::block (this=0x9cb0a0, strategy=..., poll=false, timeout=<value optimized out>)
    at SocketMonitor.cpp:243
#9  0x00007ffff6821cc8 in FIX::SocketConnector::block (this=<value optimized out>, strategy=<value optimized out>,
    poll=<value optimized out>, timeout=<value optimized out>) at SocketConnector.cpp:144
#10 0x00007ffff682b021 in FIX::SocketInitiator::onStart (this=0x9cadf0) at SocketInitiator.cpp:96
#11 0x00007ffff68247fa in FIX::Initiator::startThread (p=<value optimized out>) at Initiator.cpp:336
#12 0x0000003284c07a51 in start_thread () from /lib64/libpthread.so.0
#13 0x00000032848e893d in clone () from /lib64/libc.so.6

(gdb)


------------------------------------------------------------------------------

_______________________________________________
Quickfix-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-users
Reply | Threaded
Open this post in threaded view
|

Re: Crash with quickfix 1.13.3 in dtor of FieldMap

Harwinder Sidhu
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html
QuickFIX Support: http://www.quickfixengine.org/services.html


I tried upgrading to quickfix 1.14.3 and I am getting a similar crash:

(gdb) bt
#0  0x00007f8af46214b6 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() () from /usr/lib64/libstdc++.so.6
#1  0x0000000000575132 in FIX::FieldBase::~FieldBase (this=0x7f8ae0004f08, __in_chrg=<value optimized out>) at /home/hss/quickinstall14/include/quickfix/Field.h:91
#2  0x000000000060be1e in std::pair<int const, FIX::FieldBase>::~pair (this=0x7f8ae0004f00, __in_chrg=<value optimized out>)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h:68
#3  0x0000000000616292 in __gnu_cxx::new_allocator<std::pair<int const, FIX::FieldBase> >::destroy (this=0x7f8aee5a947f, __p=0x7f8ae0004f00)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/new_allocator.h:115
#4  0x00000000006131eb in std::_Rb_tree<int, std::pair<int const, FIX::FieldBase>, std::_Select1st<std::pair<int const, FIX::FieldBase> >, FIX::message_order, std::allocator<std::pair<int const, FIX::FieldBase> > >::_M_destroy_node (this=0x7f8ae00044c8, __p=0x7f8ae0004ee0) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:383
#5  0x0000000000610f39 in std::_Rb_tree<int, std::pair<int const, FIX::FieldBase>, std::_Select1st<std::pair<int const, FIX::FieldBase> >, FIX::message_order, std::allocator<std::pair<int const, FIX::FieldBase> > >::_M_erase (this=0x7f8ae00044c8, __x=0x7f8ae0004ee0) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:972
#6  0x0000000000610f16 in std::_Rb_tree<int, std::pair<int const, FIX::FieldBase>, std::_Select1st<std::pair<int const, FIX::FieldBase> >, FIX::message_order, std::allocator<std::pair<int const, FIX::FieldBase> > >::_M_erase (this=0x7f8ae00044c8, __x=0x7f8ae00045e0) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:970
#7  0x00007f8af4eaa7de in clear (this=<value optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_tree.h:726
#8  clear (this=<value optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_multimap.h:562
#9  FIX::FieldMap::clear (this=<value optimized out>) at FieldMap.cpp:145
#10 0x00007f8af4eaaf6e in FIX::FieldMap::~FieldMap (this=0x7f8ae00044c0, __in_chrg=<value optimized out>) at FieldMap.cpp:35
#11 0x000000000060cca1 in FIX::Group::~Group (this=0x7f8ae00044c0, __in_chrg=<value optimized out>) at /home/hss/quickinstall14/include/quickfix/fix44/../Group.h:41
#12 0x000000000060ccd0 in FIX::Group::~Group (this=0x7f8ae00044c0, __in_chrg=<value optimized out>) at /home/hss/quickinstall14/include/quickfix/fix44/../Group.h:41
#13 0x00007f8af4eaa827 in FIX::FieldMap::clear (this=0x7f8aee5a9640) at FieldMap.cpp:152
#14 0x00007f8af4eaaf6e in FIX::FieldMap::~FieldMap (this=0x7f8aee5a9640, __in_chrg=<value optimized out>) at FieldMap.cpp:35
#15 0x0000000000633ddc in FIX::Message::~Message (this=0x7f8aee5a9640, __in_chrg=<value optimized out>) at /home/hss/quickinstall14/include/quickfix/Message.h:68
#16 0x00007f8af4e5b2cf in FIX::Session::next (this=0x1374fd0, msg=
    "8=FIX.4.4\001\071=166622\001\063\065=W\001\063\064=3\001\064\071=BCSG\001\065\062=20151110-11:24:45.464\001\065\066=BTFOREXCERT\001\065\065=LAN\001\061\066\067=CS\001\062\060\067=XSGO\001\062\066\062=2\001\062\066\070=938\001\062\066\071=5\001\062\067\060=3998.8\001\062\067\062=20151109\001\062\070\066=6\001\062\071\060=1\001\062\066\071=7\001\062\067\060=4150\001\062\071\060=1\001\062\066\071=8\001\062\067\060=3950.1\001\062\071\060=1\001"..., timeStamp=..., queued=<value optimized out>) at Session.cpp:1189
#17 0x00007f8af4e8238c in FIX::SocketConnection::readMessages (this=0x7f8ae0000fd0, s=...) at SocketConnection.cpp:224
#18 0x00007f8af4e82575 in FIX::SocketConnection::read (this=0x7f8ae0000fd0, s=...) at SocketConnection.cpp:113
#19 0x00007f8af4e73241 in FIX::ConnectorWrapper::onEvent (this=0x7f8aee5a9d60, socket=19) at SocketConnector.cpp:59
#20 0x00007f8af4e8092d in FIX::SocketMonitor::processReadSet (this=0xeee5e0, strategy=..., readSet=...) at SocketMonitor.cpp:260
#21 0x00007f8af4e8148d in FIX::SocketMonitor::block (this=0xeee5e0, strategy=..., poll=false, timeout=<value optimized out>) at SocketMonitor.cpp:219
#22 0x00007f8af4e730d8 in FIX::SocketConnector::block (this=<value optimized out>, strategy=<value optimized out>, poll=<value optimized out>, timeout=<value optimized out>)
    at SocketConnector.cpp:114
#23 0x00007f8af4e7cc55 in FIX::SocketInitiator::onStart (this=0xeee330) at SocketInitiator.cpp:92
#24 0x00007f8af4e7643a in FIX::Initiator::startThread (p=<value optimized out>) at Initiator.cpp:286
#25 0x00007f8af48919d1 in start_thread () from /lib64/libpthread.so.0
#26 0x00007f8af3e3e8fd in clone () from /lib64/libc.so.6


On Tue, Nov 10, 2015 at 1:38 PM, Harwinder Sidhu <[hidden email]> wrote:
Hi,

We are facing a crash in the quickfix library, when we are receivng a very large message from the counterparty. I put a debug build on the machine and the crash dump is below the message.

I am using quickfix version 1.13.3, gcc 4.4.7 on CentOS 6.x and when I looked at FieldMap:174, it is a delete statement.

A similar issue with allocators is probably reported here:
http://sourceforge.net/p/quickfix/mailman/message/10833533/

which seems to be have been fixed in 1.12.4. However, since I’m using a later version, this should not be the case here.

The configure script on my machine gives the following output related to the allocators:

checking for boost::pool_allocator... yes
checking for boost::fast_pool_allocator... yes
checking __gnu_cxx::__pool_alloc... yes
checking __gnu_cxx::__mt_alloc... yes
checking __gnu_cxx::bitmap_allocator... yes

Any pointers on how can I go about fixing this issue?

Best Regards,
Harwinder


Stack Trace:

(gdb) bt
#0  0x00007ffff6858084 in FIX::FieldMap::clear (this=0x7ffff5271630) at FieldMap.cpp:174
#1  0x00007ffff6858a49 in FIX::FieldMap::~FieldMap (this=0x7ffff5271630, __in_chrg=<value optimized out>) at FieldMap.cpp:35
#2  0x000000000061bf66 in FIX::Message::~Message (this=0x7ffff5271630, __in_chrg=<value optimized out>)
    at /usr/local/include/quickfix/Message.h:58
#3  0x00007ffff6806d14 in FIX::Session::next (this=0x9c6480, msg=    "8=FIX.4.4\001\071=166387\001\063\065=W\001\063\064=3\001\064\071=BCSGATEWAY\001\065\062=20151109-21:10:23.243\001\065\066=MDFOREX\001\065\065=LAN\001\061\066\067=CS\001\062\060\067=XSGO\001\062\066\062=1\001\062\066\070=935\001\062\066\071=5\001\062\067\060=3998.8\001\062\067\062=20151109\001\062\070\066=6\001\062\071\060=1\001\062\066\071=7\001\062\067\060=4150\001\062\071\060=1\001\062\066\071=8\001\062\067\060=3950.1\001\062\071\060="..., timeStamp=..., queued=<value optimized out>) at Session.cpp:1309
#4  0x00007ffff682fecc in FIX::SocketConnection::readMessages (this=0x7fffe8000f90, s=...) at SocketConnection.cpp:234
#5  0x00007ffff682fff5 in FIX::SocketConnection::read (this=0x7fffe8000f90, s=...) at SocketConnection.cpp:124
#6  0x00007ffff6821e51 in FIX::ConnectorWrapper::onEvent (this=0x7ffff5271d60, socket=23) at SocketConnector.cpp:67
#7  0x00007ffff682e03d in FIX::SocketMonitor::processReadSet (this=0x9cb0a0, strategy=..., readSet=...) at SocketMonitor.cpp:287
#8  0x00007ffff682edcd in FIX::SocketMonitor::block (this=0x9cb0a0, strategy=..., poll=false, timeout=<value optimized out>)
    at SocketMonitor.cpp:243
#9  0x00007ffff6821cc8 in FIX::SocketConnector::block (this=<value optimized out>, strategy=<value optimized out>,
    poll=<value optimized out>, timeout=<value optimized out>) at SocketConnector.cpp:144
#10 0x00007ffff682b021 in FIX::SocketInitiator::onStart (this=0x9cadf0) at SocketInitiator.cpp:96
#11 0x00007ffff68247fa in FIX::Initiator::startThread (p=<value optimized out>) at Initiator.cpp:336
#12 0x0000003284c07a51 in start_thread () from /lib64/libpthread.so.0
#13 0x00000032848e893d in clone () from /lib64/libc.so.6

(gdb)



------------------------------------------------------------------------------

_______________________________________________
Quickfix-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-users