Hello Ildar,
thank you for pointing to this. I wonder whether the error condition was met in some of your scenarios? Obviously that should never be the case. I think the best will be to change that snippet into an assertion statement.
Regards Stefan
On 16.10.2012 10:33, Ildar Ismagilov wrote:
In function Req_cache::remove on ports-foc/src/lib/l4lx/genode_block.cc file:
void remove(void *packet, void **request) { int idx = _find(packet);
if (idx < 0) { *request = 0; PERR("Req cache entry not found!"); } *request = _cache[idx].req; // <--- if idx is -1, this negative index used for access _cache array elements _cache[idx].pkt = 0; _cache[idx].req = 0; }
should be:
void remove(void *packet, void **request) { int idx = _find(packet);
if (idx < 0) { *request = 0; PERR("Req cache entry not found!"); } else { *request = _cache[idx].req; _cache[idx].pkt = 0; _cache[idx].req = 0; } }