Michael, if you specify an empty value column subset to an index, WT drops core.
Here's the test program, ripped out of examples/c/ex_schema.c:
The interesting line is:
If you change it to:
The stack is:
In summary, at around line 429 of cur_index.c, __wt_curindex_open() calls __wt_struct_reformat() with a "columns" value of "()", and it fails, returning not-found. That jumps to the err: label, which calls __curindex_close(), which has this loop:
The table might have a non-zero number of column groups at this point, and even if it doesn't, WT_COLGROUPS returns a minimum value of 1.
In either case, cp == NULL and *cp drops core.
Sorry I'm dumping this to you, but I stared at it for a little while, and I wasn't sure what the right fix should be.