It was thus said that the Great Mike Pall once stated:
The #1 question is now: why is the GC stuck? Because usually every
string allocation is accompanied with a GC check. And once the
threshold is reached, the GC is driven forward and should quickly
get out of the sweepstring phase.
I think luaX_newstring() in llex.c must be the culprit. You can
try to add a GC check just before the 'return ts' at line 123:
luaC_checkGC(L);
If this solves the problem, then you've found a bug in Lua.
Congratulations -- it doesn't happen that often. :-)
I tried that, and nope. Still takes six minutes.
-spc (And I'd like to thank you for your help so far 8-)