[ndnSIM] Adding a new field to Data packet in ndn-cxx

rozhnova.natalya at gmail.com rozhnova.natalya at gmail.com
Tue Jul 21 12:49:39 PDT 2015

[Sorry for multiple reception]

Hi all,

I'm using the last version of ndn-cxx and ndnSIM and would like to add a new field to Data packet.
The steps I'm following (that what I used to successfully modify Interest packets):
1. I added my field to tlv.hpp
2. I created a variable in data.hpp
3. I created the get and set functions
4. I modified wireEncode and wireDecode and put my new field between signature and content respecting the reverse encoding.

I compile and run the library as follows:
./waf configure --enable-shared --disable-static (I don't do it every time, I cite it here just to show everything I've done)
sudo ./waf install

Then I run any scenario, suppose it is ndn-simple.cpp

And I get the following error:
ns3-dev-ndn-simple-debug: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.

in debug mode I get:

(gdb) bt
#0  0x00007fffeae1f107 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007fffeae204e8 in __GI_abort () at abort.c:89
#2  0x00007fffeae620fd in __malloc_assert (
    assertion=assertion at entry=0x7fffeaf50518 "(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offs"..., file=file at entry=0x7fffeaf4c005 "malloc.c", line=line at entry=2372, function=function at entry=0x7fffeaf4c383 <__func__.11292> "sysmalloc") at malloc.c:293
#3  0x00007fffeae64de0 in sysmalloc (av=0x7fffeb18d620 <main_arena>, nb=4112) at malloc.c:2369
#4  _int_malloc (av=0x7fffeb18d620 <main_arena>, bytes=4096) at malloc.c:3800
#5  0x00007fffeae66070 in __GI___libc_malloc (bytes=4096) at malloc.c:2891
#6  0x00007fffeb711d78 in operator new(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007ffff587c868 in __gnu_cxx::new_allocator<char>::allocate (this=0x7fffffffbb37, __n=4096) at /usr/include/c++/4.9/ext/new_allocator.h:104
#8  0x00007ffff58cc735 in boost::iostreams::detail::basic_buffer<char, std::allocator<char> >::basic_buffer (this=0x7fffffffbb70, buffer_size=4096) at /usr/include/boost/iostreams/detail/buffer.hpp:146
#9  0x00007ffff58cb7c5 in boost::iostreams::detail::basic_buffer<char, std::allocator<char> >::resize (this=0x7fffffffbf28, buffer_size=4096) at /usr/include/boost/iostreams/detail/buffer.hpp:162
#10 0x00007ffff58ca431 in boost::iostreams::detail::indirect_streambuf<ndn::iostreams::buffer_append_device, std::char_traits<char>, std::allocator<char>, boost::iostreams::output>::open (this=0x7fffffffbec8, t=..., 
    buffer_size=4096, pback_size=4) at /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:183
#11 0x00007ffff58c8534 in boost::iostreams::stream_buffer<ndn::iostreams::buffer_append_device, std::char_traits<char>, std::allocator<char>, boost::iostreams::output>::open_impl (this=0x7fffffffbec8, t=..., buffer_size=-1, 
    pback_size=-1) at /usr/include/boost/iostreams/stream_buffer.hpp:106
#12 0x00007ffff58c63b6 in boost::iostreams::stream_buffer<ndn::iostreams::buffer_append_device, std::char_traits<char>, std::allocator<char>, boost::iostreams::output>::open (this=0x7fffffffbec8, t=..., buffer_size=-1, 
    pback_size=-1) at /usr/include/boost/iostreams/stream_buffer.hpp:94
#13 0x00007ffff58c38ff in boost::iostreams::stream<ndn::iostreams::buffer_append_device, std::char_traits<char>, std::allocator<char> >::open_impl (this=0x7fffffffbec0, dev=..., buffer_size=-1, pback_size=-1)
    at /usr/include/boost/iostreams/stream.hpp:143
#14 0x00007ffff58c0bc0 in boost::iostreams::stream<ndn::iostreams::buffer_append_device, std::char_traits<char>, std::allocator<char> >::open (this=0x7fffffffbec0, t=..., buffer_size=-1, pback_size=-1)
    at /usr/include/boost/iostreams/stream.hpp:128
#15 0x00007ffff58bdad2 in ndn::OBufferStream::OBufferStream (this=0x7fffffffbec0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/local/include/ndn-cxx/encoding/buffer-stream.hpp:89
#16 0x00007ffff58c1cd3 in ndn::io::load<ndn::IdentityCertificate> (is=..., encoding=ndn::io::BASE_64) at /usr/local/include/ndn-cxx/util/io.hpp:65

It's already being two days that I don't understand what's wrong... Can anybody help me please?

thanks in advance,

More information about the ndnSIM mailing list