From: <ns...@ac...> - 2008-03-19 03:51:35
|
> This is a fairly recent build from the JIT_SUPPORT CVS branch. Anyone > come across this problem before? I guess we're stuck inside the while > (index) loop inside odb_update_node... Trapped it with a debug build, here's some of the loop control variables: (gdb) l 57 58 data = odb->data; 59 index = data->hash_base[odb_do_hash(data, key)]; 60 while (index) { 61 node = &data->node_base[index]; 62 if (node->key == key) { 63 if (node->value + 1 != 0) { 64 node->value += 1; 65 } else { 66 /* post profile tools must handle overflow */ (gdb) bt #0 odb_update_node (odb=0x85c8d64, key=106180) at db_insert.c:62 #1 0x0804b8ac in sfile_log_sample (trans=0xbfff48a0) at opd_sfile.c:449 #2 0x0804c902 in opd_process_samples (buffer=0xb7f73008 "????\002", count=44573) at opd_trans.c:124 #3 0x08049d55 in opd_26_start () at init.c:141 #4 0x0804a833 in main (argc=9, argv=0xbfff4ac4) at oprofiled.c:515 (gdb) p node $70 = (odb_node_t *) 0x85cd458 (gdb) p /x *node $71 = {key = 0x6c0000004c, value = 0xb7f6d000, next = 0x5} (gdb) p data $72 = (odb_data_t *) 0x85c6108 (gdb) p /x *data $73 = {node_base = 0x85cd408, hash_base = 0xb7f6d86c, descr = 0xb7f6d04c, hash_mask = 0x7f, sizeof_header = 0x4c, offset_node = 0x6c, base_memory = 0xb7f6d000, fd = 0x8, filename = 0x85d3650, ref_count = 0xffffffff, list = {next = 0x806a4e0, prev = 0x806a4e0}} (gdb) p sizeof(index) $74 = 4 (gdb) p /x *odb $75 = {data = 0x85c6108} (gdb) p /x key $76 = 0x19ec4 (gdb) n 92 index = node->next; (gdb) n 61 node = &data->node_base[index]; (gdb) p index $77 = 5 (gdb) n 62 if (node->key == key) { (gdb) p node $78 = (odb_node_t *) 0x85cd458 (gdb) Let me know if there's anything else that'd be of value to track this down. cheers. -- Nathan |