Ok, found the definition of th_create_small in pike_threadlib.h:
#define th_create_small(ID,fun,arg) thr_create(NULL,8192*sizeof(char*),fun,arg,THR_DAEMON|THR_DETACHED,ID)
Ok, so the entire stack is set to 8k. Then allocating an auto variable of size 8k is completely out of the question, as there needs to be room for at least one call frame as well. Conclusion: File->proxy() is broken and has been since 1998...