Preemption in cooperative mode?

Hi, I am using Freertos 7.1.1 in cooperative mode, but for some reason I am seeing that my tasks are pre-empted ! This was eg detected by adding a counter in the memory free function (increase at the start, decrease at the end).
Every once and a while, the function is entered while the counter is still 1  (and if I also log the taskhandle of the ‘other task already in the function’, I see that it points to another one of my  tasks in the ready state).
When letting it run a little bit longer, the counter becomes 0 again, so the other task apparently continued from within the function. Exactly the behavior one would expect in case of a preemptive scheduler, but not with a cooperative one. Any suggestions about what might be going on ?
The memory free function does not contain yields etc which could explain the taskswitch. Are there other not immediately obvious ways in which a task may be preempted even in cooperative mode (except for interrupts of course).
Eg  For the xTimerCreate callback function, it is not directly clear under which task that  is called ?

Preemption in cooperative mode?

Do any of your interrupts call a yield function directly or through a macro like portEND_SWITCHING_ISR or portYIELD_FROM_ISR? Does your task call any API functions that would make it block?

Preemption in cooperative mode?

You are absolutely right,  the networking interrupt handler does a yield from ISR. Thanks a *lot* for the solution !