From: Benjamin J. <bhj...@gm...> - 2008-07-31 18:00:48
|
The segfaults are seemingly at random. They all end either at search_method or at st_lookup, which is the part which checks the hash table for selectors ot figure out which method to send the notification to. We're calling them on the main thread with performSelectorOnMainThread: so it's not a cross-thread issue. Is this some object which is being hit by GC? We're calling GC.disable while this code is running. st_lookup(table, key, value) st_table *table; register st_data_t key; st_data_t *value; { unsigned int hash_val, bin_pos; register st_table_entry *ptr; hash_val = do_hash(key, table); # CRASHES HERE!!!!!!!!!! FIND_ENTRY(table, ptr, hash_val, bin_pos); if (ptr == 0) { return 0; } else { if (value != 0) *value = ptr->record; return 1; } } Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000002 Thread 0 Crashed: 0 libruby.dylib 0x0030a0ac st_lookup + 11 (st.c:250) 1 libruby.dylib 0x002a0958 search_method + 56 (eval.c:494) 2 libruby.dylib 0x002a09ba rb_get_method_body + 39 (eval.c:515) |