[genode] bug report on nic_bridge
y.jaeyong at ...9...
Tue Jan 22 01:22:50 CET 2013
I think I found a bug on nic_bridge. Just briefly, nic_bridge uses memcmp
to maintain avl_tree for clients, but genode memcmp impl. is not fully
nic_brdige uses address node which is a avl_tree node that uses
Genode::memcmp to determine which node is higher:
bool higher(Address_node *c)
using namespace Genode;
return (memcmp(&c->_addr.addr, &_addr.addr,
sizeof(_addr.addr)) > 0);
Genode memcmp is not fully c-standard compatible: it only returns 0 or 1.
* Compare memory blocks
* \retval 0 memory blocks are equal
* \retval 1 memory blocks differ
* NOTE: This function is not fully compatible to the C standard.
inline int memcmp(const void *p0, const void *p1, size_t size)
char *c0 = (char *)p0;
char *c1 = (char *)p1;
for (i = 0; i < size; i++)
if (c0[i] != c1[i]) return 1;
which makes Address_node avl_tree only grows in one direction (1 side).
Once the avl_tree is rebalanced, we never reach to the other side (0 side).
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the users