← Back to team overview

rohc team mailing list archive

Re: 32-bit Compatibility?

 

Greetings,

> I'll look at your patch. I remember now that I worked on this topic too. With a different way to alter the code. See
> https://github.com/didier-barvaux/rohc/commit/55a1da25e970637edd746a2cb7fec530157cd4f7
 
>>  I have since switched to using the master branch for the long term.
>>  When I build it, only __aeabi_uldivmod appears to be undefined.  

> I tested on ARM. I confirm the problem for the kernel module.

Using the do_div macro for the kernel, I was able to remedy the 64-bit division issue.  This may already be in the patch in my last message.

>> Is it possible my patch is causing the crash?  I've turned tracing on 
>> but kernel panics usually prevent me from figuring out the exact point 
>> of the crash.

> Probably not if it happens with TCP traffic.

Correct, it turns out that the large stack frame (below) is the cause of the kernel crashes.  

>> I also get the following warnings when building from master:
>> src/decomp/d_tcp.c:880:1: warning: the frame size of 16376 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>> src/decomp/rohc_decomp_rfc3095.c:1671:1: warning: the frame size of 1096 bytes is larger than 1024 bytes [-Wframe-larger-than=]

> Yes, I know those 2 warnings. I defined large structs as local variables, so the stack became quite big. I have yet to figure out how to achieve the same job without them.
> I don't know if large stacks may cause problems in the kernel or not.

I've done some refactoring to dynamically allocate the rohc_tcp_extr_bits and rohc_tcp_decoded_values structures.  Also passing those structures in by reference also seems to shrink the size of the stack frame for d_tcp_decode().  No more crashes and the TCP profile appears to work!  :-)  I am still seeing some issues with some content-heavy HTTP requests, but these may still be open issues.

Regards,
-Alex




Follow ups

References