In debug mode, stepping to the problem point shows that there is an object reference in the variable obj, but then it's blown out with the EXC_BAD_ACCESS when I try to print that object to the console. Or perhaps all of this is a simple logging question: is there a catch-all way to dump the type/contents of an id type?
static void
eachShape(void *ptr, void* unused) {
cpShape *shape = (cpShape *) ptr;
id obj = shape->data;
NSLog(@"shape->data: %@", obj); // this is where I die