[Click] strange bug

Eddie Kohler kohler at cs.ucla.edu
Tue Feb 16 18:54:45 EST 2010


Hi Amrita,

Sorry, it's been a while.  That is quite a weird tailroom() number!  It looks 
very much like memory corruption.  I have some questions.

- Are you running on a 32- or 64-bit architecture?
- Would you feel comfortable sharing the code of your modified timedsource?

E


Amita Ekbote wrote:
> Hello,
> 
> I am trying to add sequence numbers in the data portion of a packet, so i
> edited the timedsource.cc to just push the sequence number in the packet.
> The code converts the number to string, "pushes" the strings length on the
> packet and copies it. I am getting the following error
> 
> click: ../lib/packet.cc:416: WritablePacket*
> Packet::expensive_uniqueify(int32_t, int32_t, bool): Assertion
> `(extra_headroom >= (int32_t)(-headroom())) && (extra_tailroom >=
> (int32_t)(-tailroom()))' failed.
> 
> Initially the packet has no headroom or tailroom. The headroom() and
> tailroom() return 0. The sequence of function calls is
> push->expensive_push->expensive_uniqueify. Right before expensive_uniqueify
> is called the headroom and tailroom are still 0. I printed values before the
> assertion and I get these:
> 
> extra headroom 128 headroom 0 extra_tailroom 0 tailroom -157483016
> end_buffer 137 end_data 157483153
> 
> There is nothing else that is modifying the packet before the function call
> or during the function call. I am clueless as to why the end_data and
> end_buffer values are so weird. Any suggestions as to why this would be
> happening would be really helpful.
> 
> Thanks!
> 


More information about the click mailing list