keith.bostic reports: in _curjoin_entry_member() there's this code:
WT_ASSERT(session, iter == NULL || entry->subjoin == iter->child->cjoin); ret = __curjoin_entries_in_range(session, entry->subjoin, key, iter == NULL ? NULL : iter->child); if (iter != NULL && WT_CURJOIN_ITER_CONSUMED(iter->child)) { WT_ERR(__curjoin_iter_bump(iter)); ret = WT_NOTFOUND; } return (ret);
Should that final return be WT_ERR(ret); instead, because __curjoin_entries_in_range returns WT_NOTFOUND.