[Click] strange bug
Amita Ekbote
amita.ekbote at gmail.com
Tue Feb 16 19:31:28 EST 2010
Hey,
The bug is kinda solved. I should have posted it , but here are the
details:
I was modifying the packet in the run_timer function of timed source, the
code was something like this
{
output.push(p)
p->data_modify //add sequence number
}
i got the error because the push occurred before the modification, looks
like the packet was accessible for some time and then got deleted. I am not
completely familiar with how the push function works and am not sure when
the packet gets deleted. Looked like a race condition.
Thanks !
On Tue, Feb 16, 2010 at 5:54 PM, Eddie Kohler <kohler at cs.ucla.edu> wrote:
> 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!
>>
>>
--
Amita Ekbote
More information about the click
mailing list