Thanks for looking at these hangs/crashes. This should be the last one for now.
ExtHandler Open2() attempts to create a vector of CNode instances that is essentially numInodes long:
UInt32 numReserveInodes = _h.NumInodes - _h.NumFreeInodes + 1;
if (numReserveInodes != 0)
{
_nodes.Reserve(numReserveInodes);
If numInodes is large this allocation will fail causing a crash.
$ 7z t crashes/9a0ccc67e56ecdcefbe61ba64635bd6c38ea9c6ce15e4334937b7ae5715c2285
7-Zip [64] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16
p7zip Version 15.09 beta (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,6 CPUs x64)
Scanning the drive for archives:
1 file, 2123 bytes (3 KiB)
Testing archive: crashes/9a0ccc67e56ecdcefbe61ba64635bd6c38ea9c6ce15e4334937b7ae5715c2285
==13922== WARNING: AddressSanitizer failed to allocate 0x0085dd60d610 bytes
ASAN:SIGSEGV
==13922== ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f27cdaeb91d sp 0x7ffd0495a760 bp 0x7ffd0495a770 T0)
how it was created?
Is it random?
What is probability to get such file?
I still don't know how to fix it, if we want to support files with big number of inodes.