- action_trace(new action_list_t()),
- thread_map(new HashTable<int, Thread *, int>()),
- obj_map(new HashTable<const void *, action_list_t *, uintptr_t, 4>()),
- condvar_waiters_map(new HashTable<const void *, action_list_t *, uintptr_t, 4>()),
- obj_thrd_map(new HashTable<void *, SnapVector<action_list_t> *, uintptr_t, 4 >()),
- promises(new SnapVector<Promise *>()),
- futurevalues(new SnapVector<struct PendingFutureValue>()),
- pending_rel_seqs(new SnapVector<struct release_seq *>()),
- thrd_last_action(new SnapVector<ModelAction *>(1)),
- thrd_last_fence_release(new SnapVector<ModelAction *>()),
+ action_trace(),
+ thread_map(2), /* We'll always need at least 2 threads */
+ obj_map(),
+ condvar_waiters_map(),
+ obj_thrd_map(),
+ promises(),
+ futurevalues(),
+ pending_rel_seqs(),
+ thrd_last_action(1),
+ thrd_last_fence_release(),