[Click] strange bug

Amita Ekbote amita.ekbote at gmail.com
Thu Dec 17 15:21:12 EST 2009


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!

-- 
Amita Ekbote


More information about the click mailing list