From: Henrik M. <hen...@gm...> - 2010-01-05 10:48:45
|
Hi, I have a problem when using the uip6 stack. When I receive icmpv6 packets of type 135 the tcpip_icmp6_call function located in tcpip.c is called. If I understand it correctly the icmp6_new function is never called by default so the "uip_icmp6_conns.appstate.p" should be NULL. Which it is for me. The problem occurs when process_post_synch(uip_icmp6_conns.appstate.p, type, 0) is called inside tcpip_icmp6_call. process_post_synch inturns calls call_process() whichs does some checks on the uip_icmp6_conns.appstate.p structure members. All of these tests pass which makes the call_process function execute uip_icmp6_conns.appstate.p->thread. This will make the program crash because the uip_icmp6_conns.appstate.p points to NULL which in turns make its members invalid. I don't know if the compiler is not handling this correctly (which I don't think because this is a runtime problem) or if there should be a test inside process_call that checks input "struct process *p" if it is a pointer to NULL or maybe doing this test in tcpip_icmp6_call? I'm using RF230 together with sicslowpan and the Renesas M16c/62p mcu with GCC. Cheers, Henrik |