Oh no, that sounds bad.

Have you tried to raise the nexus as a "hotfix"? As a next step I would recommend to check which functions are still running during level_load and to make sure to close them manually if necessary. I counted up a global variable and let the loading routine wait until all functions were terminated and the variable reached zero.

Here's a code snippet, adapted from the one in this thread, which you can use to write out the currently running functions using engine_gettaskinfo:

Code:
void print_all_running_tasks(STRING* _filename)
{
 	proc_mode = PROC_LATE;
	STRING * STR_NEW_LINE = str_create("
");
	int i=0;
	char* funcname;
	ENTITY* ent;
	
	var _file=file_open_write(_filename);
	
	for(i=0;i<num_actions;i++)
	{
		engine_gettaskinfo(i,&funcname,&ent);	
		if(funcname!=NULL)
		{
			file_str_write(_file,"[ ");
			if(i<10) { file_str_write(_file,"0"); }
			if(i<100) { file_str_write(_file,"0"); }
			if(i<1000) { file_str_write(_file,"0"); }
			file_var_write(_file,i);
			file_str_write(_file,"] - ");
			file_str_write(_file,funcname);
			file_str_write(_file, STR_NEW_LINE);
		}
		else
		{
			file_str_write(_file,"funcname was NULL");
		}
	}
	file_close(_file);
	
	str_remove(STR_NEW_LINE);
}



Maybe there are also some pointers from the previous level that you should remove before switching levels? Basically you should also go through Firoball's (very helpful!) tips, maybe your problem can be solved with it.

I wonder if these Windows 10 crashes might be due to a general engine bug after all.