(gdb) run 1 Starting program: /mnt/digium1/home/murf/asterisk/datastructs/utils/hashtest2 1 [Thread debugging using libthread_db enabled] [New Thread -1209047360 (LWP 9130)] starting hashtest thread 1.... [New Thread -1214653552 (LWP 9133)] hashtest thread spawned.... waiting for thread 1.... hashtest thread created... test beginning - key00000000...NO. + key00000000 - key00000000...YES (el=8736418) + key00000001 - key00000000...NO. + key00000002 - key00000001...YES (el=8736418) - key00000000...NO. - key00000000...NO. + key00000003 + key00000004 + key00000005 + key00000006 - key00000004...YES (el=8736658) - key00000000...NO. - key00000005...YES (el=8736770) + key00000007 + key00000008 + key00000009 - key00000004...NO. - key00000000...NO. - key00000008...YES (el=8736770) - key00000006...YES (el=8736888) - key00000001...NO. + key00000010 + key00000011 + key00000012 - key00000010...YES (el=8736770) - key00000007...YES (el=8736658) + key00000013 + key00000014 + key00000015 - key00000007...NO. + key00000016 + key00000017 - key00000009...YES (el=87369c0) - key00000008...NO. - key00000012...YES (el=8736af8) + key00000018 + key00000019 - key00000016...YES (el=8736d48) + key00000020 - key00000016...NO. + key00000021 + key00000022 + key00000023 - key00000009...NO. + key00000024 - key00000011...YES (el=8736888) + key00000025 + key00000026 + key00000027 + key00000028 + key00000029 - key00000005...NO. + key00000030 - key00000013...YES (el=8736770) - key00000027...YES (el=8737530) + key00000031 + key00000032 + key00000033 + key00000034 + key00000035 + key00000036 + key00000037 + key00000038 + key00000039 - key00000026...YES (el=8737418) - key00000005...NO. + key00000040 + key00000041 + key00000042 + key00000043 + key00000044 - key00000000...NO. + key00000045 + key00000046 + key00000047 - key00000005...NO. - key00000037...YES (el=8737e10) + key00000048 + key00000049 + key00000050 - key00000029...YES (el=8737760) - key00000016...NO. + key00000051 + key00000052 - key00000010...NO. + key00000053 + key00000054 + key00000055 + key00000056 + key00000057 - key00000049...YES (el=8738920) - key00000019...YES (el=8736af8) + key00000058 - key00000036...YES (el=8737cf8) + key00000059 - key00000009...NO. + key00000060 + key00000061 + key00000062 + key00000063 + key00000064 - key00000050...YES (el=8738a38) + key00000065 - key00000010...NO. - key00000018...YES (el=87369c0) + key00000066 + key00000067 + key00000068 + key00000069 + key00000070 + key00000071 + key00000072 + key00000073 + key00000074 + key00000075 + key00000076 - key00000003...YES (el=8736418) + key00000077 + key00000078 + key00000079 + key00000080 + key00000081 - key00000076...YES (el=873a080) + key00000082 + key00000083 + key00000084 + key00000085 + key00000086 + key00000087 - key00000023...YES (el=87371d8) - key00000042...YES (el=8738280) + key00000088 - key00000087...YES (el=873aa78) + key00000089 + key00000090 + key00000091 - key00000024...YES (el=87372f0) + key00000092 - key00000024...NO. - key00000061...YES (el=87392d0) - key00000067...YES (el=87396a8) + key00000093 + key00000094 + key00000095 - key00000081...YES (el=873a4f0) - key00000001...NO. + key00000096 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1214653552 (LWP 9133)] 0x00b52ee8 in strcmp () from /lib/libc.so.6 (gdb) where #0 0x00b52ee8 in strcmp () from /lib/libc.so.6 #1 0x080493e4 in hashtab_compare_strings (a=0x873aa78, b=0xb799d274, flags=8) at hashtest2.c:94 #2 0x0804af7b in ao2_callback (c=0xb799e0d8, flags=OBJ_POINTER, cb_fn=0x80493bc , arg=0xb799d274) at astobj2.c:428 #3 0x0804b14f in ao2_find (c=0xb799e0d8, arg=0xb799d274, flags=OBJ_POINTER) at astobj2.c:481 #4 0x08049581 in del_element (seedp=0xb799d320) at hashtest2.c:157 #5 0x08049792 in hashtest (data=0x1484af2d) at hashtest2.c:224 #6 0x0804de8d in dummy_start (data=0x8736008) at utils.c:789 #7 0x00c8744b in start_thread () from /lib/libpthread.so.0 #8 0x00bb580e in clone () from /lib/libc.so.6 (gdb) up 4 #4 0x08049581 in del_element (seedp=0xb799d320) at hashtest2.c:157 157 el = ao2_find(glob_hashtab, &lookup, OBJ_POINTER); (gdb) l 152 /* pick a random element from 0 to highwater-1 */ 153 x = my_rand(0,glob_highwater-1,seedp); 154 sprintf(keybuf, "key%08d", x); 155 printf("- %s", keybuf); 156 lookup.key = keybuf; 157 el = ao2_find(glob_hashtab, &lookup, OBJ_POINTER); 158 if (el) { 159 printf("...YES (el=%x)\n", (unsigned long)el); 160 ao2_ref(el, -2); /* the find should give us a new ref, and we want to delete this hashtab element, so... */ 161 els_removed++; (gdb) p keybuf $1 = "key00000087\000096\000���\000\b��\000\230u��\001\000\000\000\001\000\000\000\000\000\000\000%\211\004\b\000\000\000\000�!\005\b\030ɮ\000�o�\000\000\000\000\000\220�\231���\231��R�\000�`�\000*\000\000\000\000\033�\000\000\000\000\000��\231�\016\224\004\b" (gdb) down #3 0x0804b14f in ao2_find (c=0xb799e0d8, arg=0xb799d274, flags=OBJ_POINTER) at astobj2.c:481 481 return ao2_callback(c, flags, c->cmp_fn, arg); (gdb) down #2 0x0804af7b in ao2_callback (c=0xb799e0d8, flags=OBJ_POINTER, cb_fn=0x80493bc , arg=0xb799d274) at astobj2.c:428 428 int match = cb_fn(EXTERNAL_OBJ(cur->astobj), arg, flags) & (CMP_MATCH | CMP_STOP); (gdb) up #3 0x0804b14f in ao2_find (c=0xb799e0d8, arg=0xb799d274, flags=OBJ_POINTER) at astobj2.c:481 481 return ao2_callback(c, flags, c->cmp_fn, arg); (gdb) down #2 0x0804af7b in ao2_callback (c=0xb799e0d8, flags=OBJ_POINTER, cb_fn=0x80493bc , arg=0xb799d274) at astobj2.c:428 428 int match = cb_fn(EXTERNAL_OBJ(cur->astobj), arg, flags) & (CMP_MATCH | CMP_STOP); (gdb) p i $2 = 126164 (gdb) p c.buckets[i] $3 = {first = 0x873aab0, last = 0x873aab0} (gdb) p c.buckets[i].first $4 = (struct bucket_list *) 0x873aab0 (gdb) p *c.buckets[i].first $5 = {entry = {next = 0x0}, version = 88, astobj = 0x873a9a8} (gdb) set pri pret (gdb) p *c.buckets[i].first.astobj $7 = { priv_data = { lock = { mutex = { __data = { __lock = 0, __count = 90, __owner = 141787568, __kind = 17, __nusers = 813262187, { __spins = 808464432, __list = { __next = 0x30303030 } } }, __size = "\000\000\000\000Z\000\000\000�\201s\b\021\000\000\000key00000", __align = 0 }, track = 0, file = {0x11
, 0x0, 0x5b
, 0x873aac0 "", 0x11
, 0x3079656b
, 0x30303030
, 0x313930
, 0x19
, ---Type to continue, or q to quit--- 0x65746e69
}, lineno = {1953719666, 543649385, 1635017060, 0, 17, 0, 92, 141798304, 17, 0}, reentrancy = 93, func = {0x8737220 "", 0x11
, 0x3079656b
, 0x30303030
, 0x343930
, 0x11
, 0x0, 0x5f
, 0x87395d8 "", 0x11
}, thread = {813262187, 808464432, 3488048, 25, 1702129257, 1953719666, 543649385, 1635017060, 0, 17} }, ref_counter = 0, destructor_fn = 0x60, data_size = 141798528, magic = 17 }, user_data = 0x873aa78 } (gdb) p *c.buckets[i].first.astobj $8 = { priv_data = { lock = { mutex = { __data = { __lock = 0, __count = 90, __owner = 141787568, __kind = 17, __nusers = 813262187, { __spins = 808464432, __list = { __next = 0x30303030 } } }, __size = "\000\000\000\000Z\000\000\000�\201s\b\021\000\000\000key00000", __align = 0 }, track = 0, file = {0x11
, 0x0, 0x5b
, 0x873aac0 "", 0x11
, 0x3079656b
, 0x30303030
, 0x313930
, 0x19
, ---Type to continue, or q to quit--- 0x65746e69
}, lineno = {1953719666, 543649385, 1635017060, 0, 17, 0, 92, 141798304, 17, 0}, reentrancy = 93, func = {0x8737220 "", 0x11
, 0x3079656b
, 0x30303030
, 0x343930
, 0x11
, 0x0, 0x5f
, 0x87395d8 "", 0x11
}, thread = {813262187, 808464432, 3488048, 25, 1702129257, 1953719666, 543649385, 1635017060, 0, 17} }, ref_counter = 0, destructor_fn = 0x60, data_size = 141798528, magic = 17 }, user_data = 0x873aa78 } (gdb) quit The program is running. Exit anyway? (y or n) n Not confirmed. (gdb) quit The program is running. Exit anyway? (y or n) y