wiredtiger/wiredtiger.github.com — Issue #47: segfault in automated testing
Author: wiredtiger
Created: 2012-01-31 15:31:36+00:00
State: open

Hi Keith,

Please take a look into this segfault in automated testing:

```
Reason: KERN_INVALID_ADDRESS at address: 0xfffffffffffffffc
0x000000010002b89e in __wt_col_search (session=0x1008561a8, recno=0, flags=1) at col_srch.c:102
102 cipdata = WT_COL_PTR(page, cip);
(gdb) where
#0 0x000000010002b89e in __wt_col_search (session=0x1008561a8, recno=0, flags=1) at col_srch.c:102
#1 0x000000010002b054 in __col_update (session=0x1008561a8, recno=0, value=0x101000950, is_write=1) at col_put.c:68
#2 0x000000010002afbc in __wt_btree_col_put (session=0x1008561a8, recno=0, value=0x101000950) at col_put.c:44
#3 0x0000000100010e36 in __wt_btcur_insert (cbt=0x101000890) at bt_cursor.c:385
#4 0x0000000100009502 in __curbtree_insert (cursor=0x101000890) at cur_btree.c:114
#5 0x0000000100004366 in wts_bulk_load () at wts.c:208
#6 0x0000000100002a9d in main (argc=0, argv=0x7fff5fbff008) at t.c:93
(gdb) list 90
85 /*
86 * Copy the page's write generation value before reading anything on
87 * the page.
88 */
89 write_gen = page->write_gen;
90
91 /*
92 * Search the leaf page. We do not check in the search path for a
93 * record greater than the maximum record in the tree; in that case,
94 * we arrive here with a record that's impossibly large for the page.
(gdb)
95 */
96 switch (page->type) {
97 case WT_PAGE_COL_FIX:
98 case WT_PAGE_COL_VAR:
99 if (recno >= page->u.col_leaf.recno + page->entries)
100 goto notfound;
101 cip = page->u.col_leaf.d + (recno - page->u.col_leaf.recno);
102 cipdata = WT_COL_PTR(page, cip);
103 break;
104 case WT_PAGE_COL_RLE:
(gdb) print recno
$1 = 0
(gdb) print page->u.col_leaf.recno
$2 = 1
(gdb) print page->entries
$3 = 0
```

Thanks,
Michael.