X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fbinary.c;h=5170dac06ccda9de159b0f49ac54f3795d31781c;hb=13078002b01ee4f63eb2001d2ef479a2a006ea32;hp=3dab6a9210ca8fc9ef26f7c41710dff3cebc9c49;hpb=dcb9c2c08fe33d0d04511ec6f46bf1d1c5980236;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/binary.c b/KernelLand/Kernel/binary.c index 3dab6a92..5170dac0 100644 --- a/KernelLand/Kernel/binary.c +++ b/KernelLand/Kernel/binary.c @@ -231,23 +231,19 @@ int Proc_int_Execve(const char *File, const char **ArgV, const char **EnvP, int } // --- Get argc - for( argc = 0; ArgV && ArgV[argc]; argc ++ ); + for( argc = 0; ArgV && ArgV[argc]; argc ++ ) + ; // --- Set Process Name Threads_SetName(File); // --- Clear User Address space - // NOTE: This is a little roundabout, maybe telling ClearUser to not touch the - // PPD area would be a better idea. if( bClearUser ) { - int nfd = *Threads_GetMaxFD(); - void *handles; - handles = VFS_SaveHandles(nfd, NULL); - VFS_CloseAllUserHandles(); + // MM_ClearUser should preserve handles MM_ClearUser(); - VFS_RestoreHandles(nfd, handles); - VFS_FreeSavedHandles(nfd, handles); + // - NOTE: Not a reliable test, but helps for now + ASSERTC( VFS_IOCtl(0, 0, NULL), !=, -1 ); } // --- Load new binary @@ -334,6 +330,8 @@ tVAddr Binary_Load(const char *Path, tVAddr *EntryPoint) if(pBinary->Interpreter) { tVAddr start; if( Binary_Load(pBinary->Interpreter, &start) == 0 ) { + Log_Error("Binary", "Can't load interpeter '%s' for '%s'", + pBinary->Interpreter, Path); LEAVE('x', 0); return 0; }