This issue is under review: https://www.rtems.org/bugzilla/show_bug.cgi?id=1963 There seem to be two issues in the original code: - the "node" argument of the macro is not protected, which could lead to very hard to find errors (this doesn't seem to cause any immediate problems just now, but it's a lousy risk to take) - more seriously, "offsetof" counts in bytes while arithmentic on the "node" pointer counts in multiples of whatever size that object has RTEMS with this patch applied runs well (on Milkymist), but I don't know if the code in question actually is executed. - Werner Index: rtems/cpukit/score/include/rtems/score/rbtree.h =================================================================== --- rtems.orig/cpukit/score/include/rtems/score/rbtree.h 2011-11-12 08:52:50.000000000 -0300 +++ rtems/cpukit/score/include/rtems/score/rbtree.h 2011-11-12 09:00:35.000000000 -0300 @@ -90,7 +90,9 @@ * */ #define _RBTree_Container_of(node,container_type, node_field_name) \ - ((container_type*) (node - offsetof(container_type,node_field_name))) + ((container_type*) ((void *) (node) - \ + offsetof(container_type,node_field_name))) + /** * This type indicates the direction.