rohc team mailing list archive
-
rohc team
-
Mailing list archive
-
Message #01831
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