On Wednesday, July 12, 2017 at 9:12:15 PM UTC+2, Yuri Gribov wrote:
>
> On Wed, Jul 12, 2017 at 4:55 PM, sothy shan <[email protected]
> <javascript:>> wrote:
> >
> >
> > On Wednesday, July 12, 2017 at 2:52:12 PM UTC+2, Maxim Ostapenko wrote:
> >>
> >> Hm, looks pretty the same to
> >> https://github.com/google/sanitizers/issues/830. Could you provide
> more
> >> details how to reproduce the issue?
> >
> >
> > This error is made at run-time. From the stack, FeatureReply DTOR is
> > called.
> > From there, of10::Port DTOR is called and subsequently Port Common is
> > called.
> > When PortCommon is called , it gives error.
>
> You built your app with GCC6 (which thus used libstdc++ headers from
> GCC6) but then ran it with libstdc++ from GCC5
> (/usr/lib/x86_64-linux-gnu/libstdc++.so.6) which might have caused ABI
> mismatch. Try to set up LD_LIBRARY_PATH appropriately so that app
> loads proper libstdc++.so.
>
Yes. It seems that problem. However, I get into another problem.
4096==ERROR: AddressSanitizer: attempting double-free on 0x604000004250 in
thread T0:
#0 0x7f818389b630 in operator delete(void*)
(/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc8630)
#1 0x7f817f4d50e1 in fluid_msg::PacketOutCommon::~PacketOutCommon()
fluid/ofcommon/msg.cc:307
#2 0x12168ad in void
std::_Destroy<fluid_msg::of10::PacketOut>(fluid_msg::of10::PacketOut*)
/usr/include/c++/6/bits/stl_construct.h:93
#3 0x121493b in void
std::_Destroy_aux<false>::__destroy<fluid_msg::of10::PacketOut*>(fluid_msg::of10::PacketOut*,
fluid_msg::of10::PacketOut*) /usr/include/c++/6/bits/stl_construct.h:103
#4 0x1210e07 in void
std::_Destroy<fluid_msg::of10::PacketOut*>(fluid_msg::of10::PacketOut*,
fluid_msg::of10::PacketOut*) /usr/include/c++/6/bits/stl_construct.h:126
#5 0x120e31b in void std::_Destroy<fluid_msg::of10::PacketOut*,
fluid_msg::of10::PacketOut>(fluid_msg::of10::PacketOut*,
fluid_msg::of10::PacketOut*, std::allocator<fluid_msg::of10::PacketOut>&)
/usr/include/c++/6/bits/stl_construct.h:151
#6 0x1213430 in void std::vector<fluid_msg::of10::PacketOut,
std::allocator<fluid_msg::of10::PacketOut>
>::_M_emplace_back_aux<fluid_msg::of10::PacketOut>(fluid_msg::of10::PacketOut&&)
>
/usr/include/c++/6/bits/vector.tcc:436
#7 0x120ef66 in void std::vector<fluid_msg::of10::PacketOut,
std::allocator<fluid_msg::of10::PacketOut>
>::emplace_back<fluid_msg::of10::PacketOut>(fluid_msg::of10::PacketOut&&)
/usr/include/c++/6/bits/vector.tcc:101
#8 0x120c1ec in std::vector<fluid_msg::of10::PacketOut,
std::allocator<fluid_msg::of10::PacketOut>
>::push_back(fluid_msg::of10::PacketOut&&)
/usr/include/c++/6/bits/stl_vector.h:933
#9 0x11e890e in
ofd::topology_manager::feature_response_process(fluid_msg::of10::FeaturesReply)
topo/topologymanager.cc:605
#10 0x11e51cb in ofd::topology_manager::read_queue_msg(ofd::wrap_msg)
topo/topologymanager.cc:24
#11 0x11e61d6 in operator()<seastar::future<ofd::wrap_msg> >
topo/topologymanager.cc:99
#12 0x11f0649 in
apply<ofd::topology_manager::process_Msg()::<lambda()>::<lambda(auto:37)>,
seastar::future<ofd::wrap_msg> >
/home/sothy/netbricks/development/seastar/core/future.hh:1312
#13 0x1203d0b in operator()<seastar::future_state<ofd::wrap_msg> >
/home/sothy/netbricks/development/seastar/core/future.hh:940
#14 0x1204612 in run
/home/sothy/netbricks/development/seastar/core/future.hh:395
#15 0x456004 in
seastar::reactor::run_tasks(seastar::circular_buffer<std::unique_ptr<seastar::task,
std::default_delete<seastar::task> >,
std::allocator<std::unique_ptr<seastar::task,
std::default_delete<seastar::task> > > >&) core/reactor.cc:2316
#16 0x45cc46 in seastar::reactor::run() core/reactor.cc:2774
#17 0xab585e in seastar::app_template::run_deprecated(int, char**,
std::function<void ()>&&) core/app-template.cc:142
#18 0x12193ba in main /home/sothy/netbricks/bitbucket/ofd/ofapp.cc:186
#19 0x7f817eb9582f in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#20 0x415428 in _start
(/home/sothy/netbricks/bitbucket/ofd/a.out+0x415428)
0x604000004250 is located 0 bytes inside of 45-byte region
[0x604000004250,0x60400000427d)
freed by thread T0 here:
#0 0x7f818389b630 in operator delete(void*)
(/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc8630)
#1 0x7f817f4d50e1 in fluid_msg::PacketOutCommon::~PacketOutCommon()
fluid/ofcommon/msg.cc:307
#2 0x11e891a in
ofd::topology_manager::feature_response_process(fluid_msg::of10::FeaturesReply)
topo/topologymanager.cc:577
#3 0x11e51cb in ofd::topology_manager::read_queue_msg(ofd::wrap_msg)
topo/topologymanager.cc:24
#4 0x11e61d6 in operator()<seastar::future<ofd::wrap_msg> >
topo/topologymanager.cc:99
#5 0x11f0649 in
apply<ofd::topology_manager::process_Msg()::<lambda()>::<lambda(auto:37)>,
seastar::future<ofd::wrap_msg> >
/home/sothy/netbricks/development/seastar/core/future.hh:1312
#6 0x1203d0b in operator()<seastar::future_state<ofd::wrap_msg> >
/home/sothy/netbricks/development/seastar/core/future.hh:940
#7 0x1204612 in run
/home/sothy/netbricks/development/seastar/core/future.hh:395
#8 0x456004 in
seastar::reactor::run_tasks(seastar::circular_buffer<std::unique_ptr<seastar::task,
std::default_delete<seastar::task> >,
std::allocator<std::unique_ptr<seastar::task,
std::default_delete<seastar::task> > > >&) core/reactor.cc:2316
#9 0x45cc46 in seastar::reactor::run() core/reactor.cc:2774
#10 0xab585e in seastar::app_template::run_deprecated(int, char**,
std::function<void ()>&&) core/app-template.cc:142
#11 0x12193ba in main /home/sothy/netbricks/bitbucket/ofd/ofapp.cc:186
#12 0x7f817eb9582f in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
previously allocated by thread T0 here:
#0 0x7f818389afb0 in operator new(unsigned long)
(/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc7fb0)
#1 0x7f817f4d59e4 in fluid_msg::PacketOutCommon::data(void*, unsigned
long) fluid/ofcommon/msg.cc:380
SUMMARY: AddressSanitizer: double-free
(/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc8630) in operator delete(void*)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In summary,
std::vector<of10::PacketOut>
vec_packet_out=feature_response_process(std::move(featuresReply));
Within feature_response_process(), I create PacketOut one by one (within
for loop) and add into vector.
PacketOutCommon::~PacketOutCommon() {
if (this->data_len_) {
::operator delete(this->data_);
}
}
As shown in line 307, ::operator delete(this->data_); In my understanding,
vector keeps copy of PacketOut.
My question is that why this error comes?
Thanks again.
Best regards
Sothy
> >
> > [~PortCommon]
> >
> https://github.com/OpenNetworkingFoundation/libfluid_msg/blob/master/fluid/ofcommon/common.hh
>
> > (line 28).
> > [~Port]
> >
> https://github.com/OpenNetworkingFoundation/libfluid_msg/blob/master/fluid/of10/of10common.hh
>
> > [~~FeaturesReply() /usr/local/include/fluid/of10msg.hh:121]
> >
> https://github.com/OpenNetworkingFoundation/libfluid_msg/blob/master/fluid/of10msg.hh
>
> >
> > These information is not enough. I can provide more details. Bit complex
> to
> > reproduce the issue. Otherwise, I can do some test here if you propose.
> >
> > Best regards
> > Sothy
> >
> >
> >
> >
> >>
> >>
> >>> Hello,
> >>> I'm running the gcc 6.3.0 version with opensource code in ubuntu 16.04
> >>> LTS.
> >>> When I run my code, I am getting error.
> >>>
> >>>
> >>> ==5094==ERROR: AddressSanitizer: attempting free on address which was
> not
> >>> malloc()-ed: 0x603000012d78 in thread T0
> >>> #0 0x7f6115c33630 in operator delete(void*)
> >>> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc8630)
> >>> #1 0x12054a6 in fluid_msg::PortCommon::~PortCommon()
> >>> /usr/local/include/fluid/ofcommon/common.hh:28
> >>> #2 0x1205842 in fluid_msg::of10::Port::~Port()
> >>> /usr/local/include/fluid/of10/of10common.hh:26
> >>> #3 0x1214d62 in void
> >>> std::_Destroy<fluid_msg::of10::Port>(fluid_msg::of10::Port*)
> >>> /usr/include/c++/6/bits/stl_construct.h:93
> >>> #4 0x1213686 in void
> >>>
> std::_Destroy_aux<false>::__destroy<fluid_msg::of10::Port*>(fluid_msg::of10::Port*,
>
>
> >>> fluid_msg::of10::Port*) /usr/include/c++/6/bits/stl_construct.h:103
> >>> #5 0x120f4e6 in void
> >>> std::_Destroy<fluid_msg::of10::Port*>(fluid_msg::of10::Port*,
> >>> fluid_msg::of10::Port*) /usr/include/c++/6/bits/stl_construct.h:126
> >>> #6 0x120c5e5 in void std::_Destroy<fluid_msg::of10::Port*,
> >>> fluid_msg::of10::Port>(fluid_msg::of10::Port*, fluid_msg::of10::Port*,
> >>> std::allocator<fluid_msg::of10::Port>&)
> >>> /usr/include/c++/6/bits/stl_construct.h:151
> >>> #7 0x1208a0a in std::vector<fluid_msg::of10::Port,
> >>> std::allocator<fluid_msg::of10::Port> >::~vector()
> >>> /usr/include/c++/6/bits/stl_vector.h:426
> >>> #8 0x1205966 in fluid_msg::of10::FeaturesReply::~FeaturesReply()
> >>> /usr/local/include/fluid/of10msg.hh:121
> >>> #9 0x1238881 in
> >>>
> ofd::of_server::OFconnection::proces_read_msg(seastar::temporary_buffer<char>)
>
>
> >>> /home/sothy/netbricks/bitbucket/ofd/ofserver.hh:513
> >>> #10 0x12353b8 in
> >>>
> _ZZN3ofd9of_server12OFconnection8read_oneEvENKUlT_E_clIN7seastar6futureIJNS5_16temporary_bufferIcEEEEEEEDaS2_
>
>
> >>> /home/sothy/netbricks/bitbucket/ofd/ofserver.hh:450
> >>> #11 0x128108f in seastar::future<>
> >>> seastar::futurize<seastar::future<>
> >>> >::apply<ofd::of_server::OFconnection::read_one()::{lambda(auto:1)#1},
> >>> seastar::future<seastar::temporary_buffer<char> >
> >>> >(ofd::of_server::OFconnection::read_one()::{lambda(auto:1)#1}&&,
> >>> seastar::future<seastar::temporary_buffer<char> >&&)
> >>> /home/sothy/netbricks/development/seastar/core/future.hh:1312
> >>> #12 0x1340a2f in
> >>>
> _ZZN7seastar6futureIJNS_16temporary_bufferIcEEEE12then_wrappedIZN3ofd9of_server12OFconnection8read_oneEvEUlT_E_NS0_IJEEEEET0_OS8_ENUlSC_E_clINS_12future_stateIJS2_EEEEEDaSC_
>
>
> >>> /home/sothy/netbricks/development/seastar/core/future.hh:940
> >>> #13 0x134131c in seastar::continuation<seastar::future<>
> >>> seastar::future<seastar::temporary_buffer<char>
> >>>
> >::then_wrapped<ofd::of_server::OFconnection::read_one()::{lambda(auto:1)#1},
>
> >>> seastar::future<>
> >>>
> >(ofd::of_server::OFconnection::read_one()::{lambda(auto:1)#1}&&)::{lambda(auto:2)#1},
> >
>
> >>> seastar::temporary_buffer<char> >::run()
> >>> /home/sothy/netbricks/development/seastar/core/future.hh:395
> >>> #14 0x456004 in
> >>>
> seastar::reactor::run_tasks(seastar::circular_buffer<std::unique_ptr<seastar::task,
>
>
> >>> std::default_delete<seastar::task> >,
> >>> std::allocator<std::unique_ptr<seastar::task,
> >>> std::default_delete<seastar::task> > > >&) core/reactor.cc:2316
> >>> #15 0x45cc46 in seastar::reactor::run() core/reactor.cc:2774
> >>> #16 0xab585e in seastar::app_template::run_deprecated(int, char**,
> >>> std::function<void ()>&&) core/app-template.cc:142
> >>> #17 0x1218aa0 in main
> >>> /home/sothy/netbricks/bitbucket/ofd/ofapp.cc:186
> >>> #18 0x7f6110f2682f in __libc_start_main
> >>> (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
> >>> #19 0x415428 in _start
> >>> (/home/sothy/netbricks/bitbucket/ofd/a.out+0x415428)
> >>>
> >>> 0x603000012d78 is located 24 bytes inside of 32-byte region
> >>> [0x603000012d60,0x603000012d80)
> >>> allocated by thread T0 here:
> >>> #0 0x7f6115c32fb0 in operator new(unsigned long)
> >>> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc7fb0)
> >>> #1 0x7f61142f96f8 in std::string::_Rep::_S_create(unsigned long,
> >>> unsigned long, std::allocator<char> const&)
> >>> (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xd36f8)
> >>>
> >>> SUMMARY: AddressSanitizer: bad-free
> >>> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc8630) in operator
> delete(void*)
> >>> ==5094==ABORTING
> >>>
> >>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++==
> >>> According to the code,
> >>>
> https://github.com/OpenNetworkingFoundation/libfluid_msg/blob/master/fluid/ofcommon/common.hh
>
> >>> (line 28).
> >>> It is destrucutor call. I guess it should delete automatically.
> >>> My question is that why I am getting this strange reasons?
> >>> Thanks For your help.
> >>>
> >>> Best regards
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups
> > "address-sanitizer" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an
> > email to [email protected] <javascript:>.
> > For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.