One correction, the crash does not happen with clang compiler (I've mistakenly thought that I tested with it), but I'm sure it happens on GCC 10.1.0 for me.
I've nailed down the crash to this line in `tostringbuff`:
len = lua_number2str(buff, MAXNUMBER2STR, fltvalue(obj));
When compiling with -fsanitize=address in GCC I get this:
./lua -e "tostring(1.4999999999999999e-30)"
==224356==ERROR: AddressSanitizer: BUS on unknown address 0x000000000000 (pc 0x7f660403ca61 bp 0x39be6c71fe61a3ef sp 0x7ffdbed5f3e0 T0)
#0 0x7f660403ca61 in __vsnprintf_internal (/usr/lib/libc.so.6+0x7ea61)
#1 0x7f660432e73d in __interceptor_vsnprintf /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1647
#2 0x7f660432e9ef in __interceptor_snprintf /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1718
#3 0x55f013c8f4c0 in tostringbuff.part.0.isra.0 lua/lobject.c:350
#4 0x55f013c2cf9c in tostringbuff lua/lobject.c:346
#5 0x55f013c2cf9c in addnum2buff lua/lobject.c:454
#6 0x55f013c2d485 in luaO_pushvfstring lua/lobject.c:492
#7 0x55f013c3ecb5 in lua_pushfstring lua/lapi.c:542
#8 0x55f013c53cc7 in luaL_tolstring lua/lauxlib.c:870
#9 0x55f013c54343 in luaB_tostring lua/lbaselib.c:479
I've tried placing "assert(buff != NULL)" on that line, but when doing this the crash simply vanishes away and the buff pointer seems valid. Thus I think this perhaps could be an issue with GCC optimizations.