diff --git a/server/process.c b/server/process.c
index e738bb2..a593ad2 100644
--- a/server/process.c
+++ b/server/process.c
@@ -252,11 +252,6 @@
     process->ldt_copy        = NULL;
     process->winstation      = 0;
     process->desktop         = 0;
-    process->exe.file        = NULL;
-    process->exe.dbg_offset  = 0;
-    process->exe.dbg_size    = 0;
-    process->exe.namelen     = 0;
-    process->exe.filename    = NULL;
     process->token           = token_create_admin();
     list_init( &process->thread_list );
     list_init( &process->locks );
@@ -392,8 +387,6 @@
     list_remove( &process->entry );
     if (process->idle_event) release_object( process->idle_event );
     if (process->queue) release_object( process->queue );
-    if (process->exe.file) release_object( process->exe.file );
-    if (process->exe.filename) free( process->exe.filename );
     if (process->id) free_ptid( process->id );
     if (process->token) release_object( process->token );
 }
@@ -480,8 +473,6 @@
 {
     struct process_dll *dll;
 
-    if (process->exe.base == base) return &process->exe;
-
     LIST_FOR_EACH_ENTRY( dll, &process->dlls, struct process_dll, entry )
     {
         if (dll->base == base) return dll;
@@ -514,7 +505,7 @@
             return NULL;
         }
         if (file) dll->file = (struct file *)grab_object( file );
-        list_add_head( &process->dlls, &dll->entry );
+        list_add_tail( &process->dlls, &dll->entry );
     }
     return dll;
 }
@@ -524,7 +515,7 @@
 {
     struct process_dll *dll = find_process_dll( process, base );
 
-    if (dll && dll != &process->exe)
+    if (dll && (&dll->entry != list_head( &process->dlls )))  /* main exe can't be unloaded */
     {
         if (dll->file) release_object( dll->file );
         if (dll->filename) free( dll->filename );
@@ -597,8 +588,6 @@
     destroy_process_classes( process );
     remove_process_locks( process );
     set_process_startup_state( process, STARTUP_ABORTED );
-    if (process->exe.file) release_object( process->exe.file );
-    process->exe.file = NULL;
     wake_up( &process->obj, 0 );
     if (!--running_processes) close_master_socket();
 }
@@ -850,18 +839,12 @@
 {
     struct module_snapshot *snapshot, *ptr;
     struct process_dll *dll;
-    int total = 1;
+    int total = 0;
 
     LIST_FOR_EACH_ENTRY( dll, &process->dlls, struct process_dll, entry ) total++;
     if (!(snapshot = mem_alloc( sizeof(*snapshot) * total ))) return NULL;
 
-    /* first entry is main exe */
-    snapshot->base     = process->exe.base;
-    snapshot->size     = process->exe.size;
-    snapshot->namelen  = process->exe.namelen;
-    snapshot->filename = memdup( process->exe.filename, process->exe.namelen );
-    ptr = snapshot + 1;
-
+    ptr = snapshot;
     LIST_FOR_EACH_ENTRY( dll, &process->dlls, struct process_dll, entry )
     {
         ptr->base     = dll->base;
@@ -992,21 +975,19 @@
     }
 
     /* check if main exe has been registered as a dll already */
-    if ((dll = find_process_dll( process, req->module )))
+    if (!(dll = find_process_dll( process, req->module )))
     {
-        list_remove( &dll->entry );
-        memcpy( &process->exe, dll, sizeof(*dll) );
-        list_init( &process->exe.entry );
-        free( dll );
+        if (!(dll = process_load_dll( process, NULL, req->module,
+                                      get_req_data(), get_req_data_size() ))) return;
+        dll->size       = req->module_size;
+        dll->dbg_offset = 0;
+        dll->dbg_size   = 0;
+        dll->name       = req->name;
     }
-    else
-    {
-        process->exe.base = req->module;
-        process->exe.size = req->module_size;
-        process->exe.name = req->name;
-        if ((process->exe.namelen = get_req_data_size()))
-            process->exe.filename = memdup( get_req_data(), process->exe.namelen );
-    }
+
+    /* main exe is the first in the dll list */
+    list_remove( &dll->entry );
+    list_add_head( &process->dlls, &dll->entry );
 
     generate_startup_debug_events( process, req->entry );
     set_process_startup_state( process, STARTUP_DONE );
