|
From: | Peter Ruesch |
Subject: | [lwip-users] illegal RTOS API call from ethernet receive interrupt |
Date: | Thu, 19 Nov 2015 14:20:58 +0000 |
Hello, I’m doing some tests with lwip (1.4.1) and FreeRTOS (8.2.1) on a Kinetis K65 device. From the beginning was able to ping the target reliably. For some performance tests I added the lwiperf server from the mainline repo. I noticed, that if I was continuously pinging the target and ran a iperf test in parallel, the system stopped responding. When I halted the program execution, I was finding the program stuck in FreeRTOS runtime assertion
triggered, (at least in understanding) because I was calling FreeRTOS API functions from within the Ethernet receive interrupt context. This (presumably) illegal call to the API function happens because of a mutex guarded malloc. This does not exactly seem wrong. But it leads to this “stuck in assertion” problem. I have uploaded the stacktrace as screenshot. http://postimg.org/image/bb94dm4nj/ if I alter the RTOS settings so that the assertion is not active anymore, I can run iperf and ping in parallel for hours. Why does this RTOS API function need to be called from within the receive interrupt?
Best regards
Peter
-- Hella Gutmann Solutions GmbH * Unternehmensform: Gesellschaft mit beschraenkter Haftung * Firmensitz: 79241 Ihringen * Eingetragen im Handelsregister: AG Freiburg i.Br., HRB 290194 * Geschaeftsfuehrer: Alfred Mayer, Bjoern Rietschel * USt-IdNr.: DE142208666 |
lwip_interrupt_sema_take.png
Description: lwip_interrupt_sema_take.png
[Prev in Thread] | Current Thread | [Next in Thread] |