Huw D M Davies wrote:
Huw Davies <huw@codeweavers.com> Add support for rendering on bitmaps
This patch breaks World of Warcraft, reverting this patch makes WoW work again. This is the error:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 142 (GLX) Minor opcode of failed request: 13 (X_GLXCreateGLXPixmap) Serial number of failed request: 410 Current serial number in output stream: 411
tom
Hi All,
Not sure if this is the correct mailing list, please redirect me if not.
My goal is to port some Windows apps to AIX, so I decided to take as much Wine (winelib) as I could to help me. Initially I thought only a small portion would be suitable, but after a few weeks of work I have all the dlls/libs compiled (as simple AIX .so's) and because I'm quite naive about Wine internals, I went for wineserver also.
My first question is: has anyone tried this before? I've been googling endlessly, and haven't found a single mention (unfortunately, "wine" and "aix" keeps trying to find French drinks). If anyone has, or anyone is interested in my (hacky) attempt, please email me directly (I try to keep up on this list, but I don't do very well).
I wanted to avoid the "wine" loader, so I made a pseudo-main like:
int main( int argc, char *argv[] ) { char error[1024]; int i;
if (wine_main_preload_info) { for (i = 0; wine_main_preload_info[i].size; i++) wine_mmap_add_reserved_area( wine_main_preload_info[i].addr, wine_main_preload_info[i].size ); }
AIX_set_pthread_funcs (); /* sets up thread function call table */ wine_thread_init (); /* thread initialization stuff */ process_init (); /* does a bunch of .exe initializations */ WinMain (0,0,0,0); }
Amazingly, after building one of our simpler Windows clients, I get:
hac1dev:ghart$ ./simpleClient err:ntdll:critsection.c 309: section f0b82b58 "virtual.c: csVirtual" wait timed out in thread 0009, blocked by 0000, retrying (60 sec) err:ntdll:critsection.c 309: section f0b7ad50 "exception.c: vectored_handlers_section" wait timed out in thread 0009, blocked by 0000, retrying (60 sec) <Ctrl-C Killed>
That last line would repeat every 60 seconds or so. The server reports:
hac1dev:ghart$ wineserver -f -p -d1000 sock_init: shutdown() causes EOF wineserver: starting (pid=109454) Create key \Machine Create key \User\.Default Create key \User\S-1-5-4 0008: *fd* 0 -> 17 0009: *fd* 6 <- 17 0009: *fd* 8 <- 18 0009: init_thread( unix_pid=107466, unix_tid=1, teb=30000000, peb=f0b99118, entry=0, ldt_copy=f0b0dec8, reply_fd=6, wait_fd=8, debug_level=0 ) 0009: init_thread() = 0 { pid=0008, tid=0009, info_size=0, server_start=1135996659, version=199 } 0009: create_semaphore( access=001f0003, attributes=00000000, initial=00000000, max=00000001, name=L"" ) 0009: create_semaphore() = 0 { handle=c } 0009: select( flags=12, cookie=2ff1fab4, signal=0, timeout=1135996667.980786 (+4.999878), handles={c} ) 0009: select() = PENDING 0009: *wakeup* signaled=258 cookie=2ff1fab4 0009: select( flags=12, cookie=2ff1fab4, signal=0, timeout=1135996727.982002 (+59.999784), handles={c} ) 0009: select() = PENDING Not saving clean key \Machine Not saving clean key \User\.Default Not saving clean key \User\S-1-5-4 Not saving clean key \Machine Not saving clean key \User\.Default Not saving clean key \User\S-1-5-4 0009: *wakeup* signaled=258 cookie=2ff1fab4 0009: create_semaphore( access=001f0003, attributes=00000000, initial=00000000, max=00000001, name=L"" ) 0009: create_semaphore() = 0 { handle=10 } 0009: select( flags=12, cookie=2ff1f684, signal=0, timeout=1135996732.983095 (+4.999803), handles={10} ) 0009: select() = PENDING 0009: *wakeup* signaled=258 cookie=2ff1f684 0009: select( flags=12, cookie=2ff1f684, signal=0, timeout=1135996792.984359 (+59.999784), handles={10} ) 0009: select() = PENDING ^C0009: *killed* exit_code=1 Not saving clean key \Machine Not saving clean key \User\.Default Not saving clean key \User\S-1-5-4
So, if you have been kind enough to read this far, perhaps you also might share any ideas you have about what I have done wrong. I have traced through both the wineserver and winelib (ntdll, kernel, user, ...) code in the debugger but I haven't seen anything obvious (to my untrained eyes). I have been so bold as to even include my traces (the [PAUSE] in the client.trc is when I hit the breakpoint in the server, and start it tracing).
The problem might well be in my attempted ports of the pthread routines, the atomic operations, or some other assembly stuff. Here's my atomic ops:
#include <sys/atomic_op.h> void* interlocked_cmpxchg_ptr( void **dest, void* xchg, void* compare) { compare_and_swap ((void*)dest, (int*)&compare, (int)xchg); return compare; } int interlocked_cmpxchg( int *dest, int xchg, int compare) { compare_and_swap (dest, &compare, xchg); return compare; } int interlocked_xchg_add( int *dest, int incr ) { fetch_and_add (dest, incr); return *dest; } int interlocked_xchg( int* dest, int val ) { while (1) { int compare=*dest; if (compare_and_swap (dest, &compare, val)) return compare; } } void* interlocked_xchg_ptr( void** dest, void* val ) { while (1) { void* compare=*dest; if (compare_and_swap((void*)dest, (int*)&compare, (int)val)) return compare;}}
Thanks for any tips!
Geoff
hac1dev:ghart$ dbx ./wineserver Type 'help' for help. Core file "core" program "dbx" does not match current program (ignored) reading symbolic information ... (dbx) stop in req_init_thread [1] stop in req_init_thread (dbx) r -f -p -d1000 sock_init: shutdown() causes EOF wineserver: starting (pid=112734) Create key \Machine Create key \User\.Default Create key \User\S-1-5-4 0008: *fd* 0 -> 17 0009: *fd* 6 <- 17 0009: *fd* 8 <- 18 Not saving clean key \Machine Not saving clean key \User\.Default Not saving clean key \User\S-1-5-4 0009: init_thread( unix_pid=105014, unix_tid=1, teb=30000000, peb=f0e13118, entry=0, ldt_copy=f0d87ec8, reply_fd=6, wait_fd=8, debug_level=0 ) [1] stopped in req_init_thread at line 841 in file "thread.c" 841 struct process *process = current->process; (dbx) trace [5] trace (dbx) c trace in thread.c: 842 int reply_fd = thread_get_inflight_fd( current, req->reply_fd ); trace in thread.c: 705 if (client == -1) return -1; trace in thread.c: 709 for (i = 0; i < MAX_INFLIGHT_FDS; i++) trace in thread.c: 711 if (thread->inflight[i].client == client) trace in thread.c: 713 ret = thread->inflight[i].server; trace in thread.c: 714 thread->inflight[i].server = thread->inflight[i].client = -1; trace in thread.c: 715 return ret; trace in thread.c: 843 int wait_fd = thread_get_inflight_fd( current, req->wait_fd ); trace in thread.c: 705 if (client == -1) return -1; trace in thread.c: 709 for (i = 0; i < MAX_INFLIGHT_FDS; i++) trace in thread.c: 711 if (thread->inflight[i].client == client) trace in thread.c: 709 for (i = 0; i < MAX_INFLIGHT_FDS; i++) trace in thread.c: 711 if (thread->inflight[i].client == client) trace in thread.c: 713 ret = thread->inflight[i].server; trace in thread.c: 714 thread->inflight[i].server = thread->inflight[i].client = -1; trace in thread.c: 715 return ret; trace in thread.c: 845 if (current->unix_pid != -1) trace in thread.c: 850 if (reply_fd == -1 || fcntl( reply_fd, F_SETFL, O_NONBLOCK ) == -1) trace in thread.c: 855 if (wait_fd == -1) trace in thread.c: 860 if (!(current->reply_fd = create_anonymous_fd( &thread_fd_ops, reply_fd, ¤t->obj ))) trace in fd.c: 1390 struct fd *fd = alloc_fd( fd_user_ops, user ); trace in fd.c: 1221 struct fd *fd = alloc_object( &fd_ops ); trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in fd.c: 1223 if (!fd) return NULL; trace in fd.c: 1225 fd->fd_ops = fd_user_ops; trace in fd.c: 1226 fd->user = user; trace in fd.c: 1227 fd->inode = NULL; trace in fd.c: 1228 fd->closed = NULL; trace in fd.c: 1229 fd->access = 0; trace in fd.c: 1230 fd->sharing = 0; trace in fd.c: 1231 fd->unix_fd = -1; trace in fd.c: 1232 fd->fs_locks = 1; trace in fd.c: 1233 fd->poll_index = -1; trace in fd.c: 1234 list_init( &fd->inode_entry ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1235 list_init( &fd->locks ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1236 list_init( &fd->read_q ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1237 list_init( &fd->write_q ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1239 if ((fd->poll_index = add_poll_user( fd )) == -1) trace in fd.c: 406 if (freelist) trace in fd.c: 413 if (nb_users == allocated_users) trace in fd.c: 441 ret = nb_users++; trace in fd.c: 443 pollfd[ret].fd = -1; trace in fd.c: 444 pollfd[ret].events = 0; trace in fd.c: 445 pollfd[ret].revents = 0; trace in fd.c: 446 poll_users[ret] = fd; trace in fd.c: 447 active_users++; trace in fd.c: 448 return ret; trace in fd.c: 449 } trace in fd.c: 1244 return fd; trace in fd.c: 1245 } trace in fd.c: 1392 if (fd) trace in fd.c: 1394 fd->unix_fd = unix_fd; trace in fd.c: 1395 return fd; trace in fd.c: 1399 } trace in thread.c: 866 if (!(current->wait_fd = create_anonymous_fd( &thread_fd_ops, wait_fd, ¤t->obj ))) trace in fd.c: 1390 struct fd *fd = alloc_fd( fd_user_ops, user ); trace in fd.c: 1221 struct fd *fd = alloc_object( &fd_ops ); trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in fd.c: 1223 if (!fd) return NULL; trace in fd.c: 1225 fd->fd_ops = fd_user_ops; trace in fd.c: 1226 fd->user = user; trace in fd.c: 1227 fd->inode = NULL; trace in fd.c: 1228 fd->closed = NULL; trace in fd.c: 1229 fd->access = 0; trace in fd.c: 1230 fd->sharing = 0; trace in fd.c: 1231 fd->unix_fd = -1; trace in fd.c: 1232 fd->fs_locks = 1; trace in fd.c: 1233 fd->poll_index = -1; trace in fd.c: 1234 list_init( &fd->inode_entry ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1235 list_init( &fd->locks ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1236 list_init( &fd->read_q ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1237 list_init( &fd->write_q ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 1239 if ((fd->poll_index = add_poll_user( fd )) == -1) trace in fd.c: 406 if (freelist) trace in fd.c: 413 if (nb_users == allocated_users) trace in fd.c: 441 ret = nb_users++; trace in fd.c: 443 pollfd[ret].fd = -1; trace in fd.c: 444 pollfd[ret].events = 0; trace in fd.c: 445 pollfd[ret].revents = 0; trace in fd.c: 446 poll_users[ret] = fd; trace in fd.c: 447 active_users++; trace in fd.c: 448 return ret; trace in fd.c: 449 } trace in fd.c: 1244 return fd; trace in fd.c: 1245 } trace in fd.c: 1392 if (fd) trace in fd.c: 1394 fd->unix_fd = unix_fd; trace in fd.c: 1395 return fd; trace in fd.c: 1399 } trace in thread.c: 869 if (!is_valid_address(req->teb) || !is_valid_address(req->peb) || !is_valid_address(req->ldt_copy)) trace in thread.c: 157 return addr && !((unsigned int)addr % sizeof(int)); trace in thread.c: 158 } trace in thread.c: 157 return addr && !((unsigned int)addr % sizeof(int)); trace in thread.c: 158 } trace in thread.c: 157 return addr && !((unsigned int)addr % sizeof(int)); trace in thread.c: 158 } trace in thread.c: 875 current->unix_pid = req->unix_pid; trace in thread.c: 876 current->unix_tid = req->unix_tid; trace in thread.c: 877 current->teb = req->teb; trace in thread.c: 879 if (!process->peb) /* first thread, initialize the process too */ trace in thread.c: 881 process->peb = req->peb; trace in thread.c: 882 process->ldt_copy = req->ldt_copy; trace in thread.c: 883 reply->info_size = init_process( current ); trace in process.c: 309 struct process *process = thread->process; trace in process.c: 310 struct wine_thread *parent_thread = NULL; trace in process.c: 311 struct process *parent = NULL; trace in process.c: 314 if (process->startup_info) return process->startup_info->data_size; /* already initialized */ trace in process.c: 316 if ((info = find_startup_info( thread->unix_pid ))) trace in process.c: 298 LIST_FOR_EACH( ptr, &startup_info_list ) trace in process.c: 303 return NULL; trace in process.c: 335 if (!process->handles) process->handles = alloc_handle_table( process, 0 ); trace in handle.c: 171 if (count < MIN_HANDLE_ENTRIES) count = MIN_HANDLE_ENTRIES; trace in handle.c: 172 if (!(table = alloc_object( &handle_table_ops ))) trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in handle.c: 174 table->process = process; trace in handle.c: 175 table->count = count; trace in handle.c: 176 table->last = -1; trace in handle.c: 177 table->free = 0; trace in handle.c: 178 if ((table->entries = mem_alloc( count * sizeof(*table->entries) ))) return table; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in handle.c: 178 if ((table->entries = mem_alloc( count * sizeof(*table->entries) ))) return table; trace in handle.c: 181 } trace in process.c: 336 if (!process->handles) trace in process.c: 343 connect_process_winstation( process, NULL ); trace in winstation.c: 247 if (process->winstation) return; /* already has one */ trace in winstation.c: 250 if ((process->winstation = find_inherited_handle( process, &winstation_ops )) != 0) return; trace in handle.c: 460 struct handle_table *table = process->handles; trace in handle.c: 464 if (!table) return 0; trace in handle.c: 466 for (i = 0, ptr = table->entries; i <= table->last; i++, ptr++) trace in handle.c: 472 return 0; trace in winstation.c: 252 if (name) trace in winstation.c: 258 if (!interactive_winstation) trace in winstation.c: 262 interactive_winstation = create_winstation( &winsta0, OBJ_CASE_INSENSITIVE | OBJ_OPENIF, 0 ); trace in winstation.c: 90 if (!winstation_namespace && !(winstation_namespace = create_namespace( 7 ))) trace in object.c: 266 namespace = mem_alloc( sizeof(*namespace) + (hash_size - 1) * sizeof(namespace->names[0]) ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 267 if (namespace) trace in object.c: 269 namespace->hash_size = hash_size; trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 270 for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 272 return namespace; trace in object.c: 273 } trace in winstation.c: 93 if (memchrW( name->str, '\', name->len / sizeof(WCHAR) )) /* no backslash allowed in name */ trace in unicode.h: 266 for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)ptr; trace in unicode.h: 267 return NULL; trace in winstation.c: 99 if ((winstation = create_named_object( winstation_namespace, &winstation_ops, name, attr ))) trace in object.c: 166 if (!name || !name->len) return alloc_object( ops ); trace in object.c: 168 if ((obj = find_object( namespace, name, attributes ))) trace in object.c: 239 if (!name || !name->len) return NULL; trace in object.c: 241 list = &namespace->names[ get_name_hash( namespace, name->str, name->len ) ]; trace in object.c: 95 WCHAR hash = 0; trace in object.c: 96 len /= sizeof(WCHAR); trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 98 return hash % namespace->hash_size; trace in object.c: 242 LIST_FOR_EACH( p, list ) trace in object.c: 257 return NULL; trace in object.c: 183 if (!(name_ptr = alloc_name( name ))) return NULL; trace in object.c: 106 if ((ptr = mem_alloc( sizeof(*ptr) + name->len - sizeof(ptr->name) ))) trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 108 ptr->len = name->len; trace in object.c: 109 memcpy( ptr->name, name->str, name->len ); trace in object.c: 111 return ptr; trace in object.c: 112 } trace in object.c: 184 if ((obj = alloc_object( ops ))) trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in object.c: 186 set_object_name( namespace, obj, name_ptr ); trace in object.c: 126 int hash = get_name_hash( namespace, ptr->name, ptr->len ); trace in object.c: 95 WCHAR hash = 0; trace in object.c: 96 len /= sizeof(WCHAR); trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 98 return hash % namespace->hash_size; trace in object.c: 128 list_add_head( &namespace->names[hash], &ptr->entry ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 129 ptr->obj = obj; trace in object.c: 130 obj->name = ptr; trace in object.c: 131 } trace in object.c: 187 clear_error(); trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in object.c: 188 } trace in object.c: 190 return obj; trace in object.c: 191 } trace in winstation.c: 101 if (get_error() != STATUS_OBJECT_NAME_EXISTS) trace in thread.h: 141 static inline unsigned int get_error(void) { return current ? current->error : global_error; } trace in winstation.c: 104 winstation->flags = flags; trace in winstation.c: 105 winstation->clipboard = NULL; trace in winstation.c: 106 winstation->atom_table = NULL; trace in winstation.c: 107 list_add_tail( &winstation_list, &winstation->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in winstation.c: 108 list_init( &winstation->desktops ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in winstation.c: 111 return winstation; trace in winstation.c: 112 } trace in winstation.c: 263 winstation = interactive_winstation; trace in winstation.c: 264 } trace in winstation.c: 267 if (winstation) trace in winstation.c: 269 process->winstation = alloc_handle( process, winstation, WINSTA_ALL_ACCESS, FALSE ); trace in handle.c: 226 access &= ~RESERVED_ALL; trace in handle.c: 227 if (inherit) access |= RESERVED_INHERIT; trace in handle.c: 228 if (!process->handles) trace in handle.c: 233 return alloc_entry( process->handles, obj, access ); trace in handle.c: 204 struct handle_entry *entry = table->entries + table->free; trace in handle.c: 207 for (i = table->free; i <= table->last; i++, entry++) if (!entry->ptr) goto found; trace in handle.c: 208 if (i >= table->count) trace in handle.c: 213 table->last = i; trace in handle.c: 215 table->free = i + 1; trace in handle.c: 216 entry->ptr = grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 217 entry->access = access; trace in handle.c: 218 entry->fd = -1; trace in handle.c: 219 return index_to_handle(i); trace in handle.c: 72 return (obj_handle_t)((index + 1) << 2); trace in handle.c: 73 } trace in handle.c: 234 } trace in winstation.c: 270 release_object( winstation ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in winstation.c: 272 clear_error(); /* ignore errors */ trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in winstation.c: 273 } trace in process.c: 344 connect_process_desktop( process, NULL ); trace in winstation.c: 281 if (process->desktop) return; /* already has one */ trace in winstation.c: 283 if ((winstation = get_process_winstation( process, WINSTA_CREATEDESKTOP ))) trace in winstation.c: 142 return (struct winstation *)get_handle_obj( process, process->winstation, trace in handle.c: 388 if (!(obj = get_magic_handle( handle ))) trace in handle.c: 369 switch((unsigned long)handle) trace in handle.c: 377 return NULL; trace in handle.c: 390 if (!(entry = get_handle( process, handle ))) return NULL; trace in handle.c: 251 struct handle_table *table = process->handles; trace in handle.c: 255 if (handle_is_global(handle)) trace in handle.c: 85 return ((unsigned long)handle ^ HANDLE_OBFUSCATOR) < 0x10000; trace in handle.c: 86 } trace in handle.c: 260 if (!table) goto error; trace in handle.c: 261 index = handle_to_index( handle ); trace in handle.c: 76 return ((unsigned int)handle >> 2) - 1; trace in handle.c: 77 } trace in handle.c: 262 if (index < 0) goto error; trace in handle.c: 263 if (index > table->last) goto error; trace in handle.c: 264 entry = table->entries + index; trace in handle.c: 265 if (!entry->ptr) goto error; trace in handle.c: 266 return entry; trace in handle.c: 391 if ((entry->access & access) != access) trace in handle.c: 396 obj = entry->ptr; trace in handle.c: 398 if (ops && (obj->ops != ops)) trace in handle.c: 403 return grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 404 } trace in winstation.c: 144 } trace in winstation.c: 288 if (!name) name = &default_str; trace in winstation.c: 289 if ((desktop = create_desktop( name, OBJ_CASE_INSENSITIVE | OBJ_OPENIF, 0, winstation ))) trace in winstation.c: 187 if (!(full_name = build_desktop_name( name, winstation, &full_str ))) return NULL; trace in winstation.c: 154 if (memchrW( name->str, '\', name->len / sizeof(WCHAR) )) trace in unicode.h: 266 for (end = ptr + n; ptr < end; ptr++) if (*ptr == ch) return (WCHAR *)ptr; trace in unicode.h: 267 return NULL; trace in winstation.c: 160 if (!(winstation_name = get_object_name( &winstation->obj, &winstation_len ))) trace in object.c: 136 struct object_name *ptr = obj->name; trace in object.c: 137 if (!ptr) return NULL; trace in object.c: 138 *len = ptr->len; trace in object.c: 139 return ptr->name; trace in object.c: 140 } trace in winstation.c: 163 res->len = winstation_len + name->len + sizeof(WCHAR); trace in winstation.c: 164 if (!(full_name = mem_alloc( res->len ))) return NULL; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in winstation.c: 165 memcpy( full_name, winstation_name, winstation_len ); trace in winstation.c: 166 full_name[winstation_len / sizeof(WCHAR)] = '\'; trace in winstation.c: 167 memcpy( full_name + winstation_len / sizeof(WCHAR) + 1, name->str, name->len ); trace in winstation.c: 168 res->str = full_name; trace in winstation.c: 169 return full_name; trace in winstation.c: 170 } trace in winstation.c: 189 if ((desktop = create_named_object( winstation_namespace, &desktop_ops, &full_str, attr ))) trace in object.c: 166 if (!name || !name->len) return alloc_object( ops ); trace in object.c: 168 if ((obj = find_object( namespace, name, attributes ))) trace in object.c: 239 if (!name || !name->len) return NULL; trace in object.c: 241 list = &namespace->names[ get_name_hash( namespace, name->str, name->len ) ]; trace in object.c: 95 WCHAR hash = 0; trace in object.c: 96 len /= sizeof(WCHAR); trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 98 return hash % namespace->hash_size; trace in object.c: 242 LIST_FOR_EACH( p, list ) trace in object.c: 244 const struct object_name *ptr = LIST_ENTRY( p, const struct object_name, entry ); trace in object.c: 245 if (ptr->len != name->len) continue; trace in object.c: 242 LIST_FOR_EACH( p, list ) trace in object.c: 257 return NULL; trace in object.c: 183 if (!(name_ptr = alloc_name( name ))) return NULL; trace in object.c: 106 if ((ptr = mem_alloc( sizeof(*ptr) + name->len - sizeof(ptr->name) ))) trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 108 ptr->len = name->len; trace in object.c: 109 memcpy( ptr->name, name->str, name->len ); trace in object.c: 111 return ptr; trace in object.c: 112 } trace in object.c: 184 if ((obj = alloc_object( ops ))) trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in object.c: 186 set_object_name( namespace, obj, name_ptr ); trace in object.c: 126 int hash = get_name_hash( namespace, ptr->name, ptr->len ); trace in object.c: 95 WCHAR hash = 0; trace in object.c: 96 len /= sizeof(WCHAR); trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 97 while (len--) hash ^= tolowerW(*name++); trace in unicode.h: 106 return ch + wine_casemap_lower[wine_casemap_lower[ch >> 8] + (ch & 0xff)]; trace in unicode.h: 107 } trace in object.c: 98 return hash % namespace->hash_size; trace in object.c: 128 list_add_head( &namespace->names[hash], &ptr->entry ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 129 ptr->obj = obj; trace in object.c: 130 obj->name = ptr; trace in object.c: 131 } trace in object.c: 187 clear_error(); trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in object.c: 188 } trace in object.c: 190 return obj; trace in object.c: 191 } trace in winstation.c: 191 if (get_error() != STATUS_OBJECT_NAME_EXISTS) trace in thread.h: 141 static inline unsigned int get_error(void) { return current ? current->error : global_error; } trace in winstation.c: 194 desktop->flags = flags; trace in winstation.c: 195 desktop->winstation = (struct winstation *)grab_object( winstation ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in winstation.c: 196 desktop->top_window = NULL; trace in winstation.c: 197 desktop->global_hooks = NULL; trace in winstation.c: 198 list_add_tail( &winstation->desktops, &desktop->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in winstation.c: 201 free( full_name ); trace in winstation.c: 202 return desktop; trace in winstation.c: 203 } trace in winstation.c: 291 process->desktop = alloc_handle( process, desktop, DESKTOP_ALL_ACCESS, FALSE ); trace in handle.c: 226 access &= ~RESERVED_ALL; trace in handle.c: 227 if (inherit) access |= RESERVED_INHERIT; trace in handle.c: 228 if (!process->handles) trace in handle.c: 233 return alloc_entry( process->handles, obj, access ); trace in handle.c: 204 struct handle_entry *entry = table->entries + table->free; trace in handle.c: 207 for (i = table->free; i <= table->last; i++, entry++) if (!entry->ptr) goto found; trace in handle.c: 208 if (i >= table->count) trace in handle.c: 213 table->last = i; trace in handle.c: 215 table->free = i + 1; trace in handle.c: 216 entry->ptr = grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 217 entry->access = access; trace in handle.c: 218 entry->fd = -1; trace in handle.c: 219 return index_to_handle(i); trace in handle.c: 72 return (obj_handle_t)((index + 1) << 2); trace in handle.c: 73 } trace in handle.c: 234 } trace in winstation.c: 292 release_object( desktop ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in winstation.c: 294 release_object( winstation ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in winstation.c: 296 clear_error(); /* ignore errors */ trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in winstation.c: 297 } trace in process.c: 345 thread->desktop = process->desktop; trace in process.c: 347 if (!info) return 0; trace in process.c: 375 } trace in thread.c: 884 } trace in thread.c: 890 debug_level = max( debug_level, req->debug_level ); trace in thread.c: 892 reply->pid = get_process_id( process ); trace in process.h: 130 inline static process_id_t get_process_id( struct process *process ) { return process->id; } trace in thread.c: 893 reply->tid = get_thread_id( current ); trace in thread.h: 146 static inline thread_id_t get_thread_id( struct wine_thread *thread ) { return thread->id; } trace in thread.c: 894 reply->version = SERVER_PROTOCOL_VERSION; trace in thread.c: 895 reply->server_start = server_start_time; trace in thread.c: 896 return; trace in request.c: 284 if (current) trace in request.c: 286 if (current->reply_fd) trace in request.c: 288 reply.reply_header.error = current->error; trace in request.c: 289 reply.reply_header.reply_size = current->reply_size; trace in request.c: 290 if (debug_level) trace_reply( req, &reply ); trace in trace.c: 3826 if (req < REQ_NB_REQUESTS) trace in trace.c: 3828 fprintf( stderr, "%04x: %s() = %s", trace in trace.c: 3797 if (status) trace in trace.c: 3802 sprintf( buffer, "%x", status ); trace in trace.c: 3803 return buffer; trace in trace.c: 3804 } trace in trace.c: 3830 if (reply_dumpers[req]) trace in trace.c: 3832 fprintf( stderr, " {" ); trace in trace.c: 3833 cur_pos = 0; trace in trace.c: 3834 cur_data = current->reply_data; trace in trace.c: 3835 cur_size = reply->reply_header.reply_size; trace in trace.c: 3836 reply_dumpers[req]( reply ); trace in trace.c: 661 fprintf( stderr, " pid=%04x,", req->pid ); trace in trace.c: 662 fprintf( stderr, " tid=%04x,", req->tid ); trace in trace.c: 663 fprintf( stderr, " info_size=%d,", req->info_size ); trace in trace.c: 664 fprintf( stderr, " server_start=%ld,", (long)req->server_start ); trace in trace.c: 665 fprintf( stderr, " version=%d", req->version ); trace in trace.c: 666 } trace in trace.c: 3837 fprintf( stderr, " }" ); trace in trace.c: 3839 fputc( '\n', stderr ); 0009: init_thread() = 0 { pid=0008, tid=0009, info_size=0, server_start=1135997719, version=199 } trace in trace.c: 3840 } trace in trace.c: 3843 } trace in request.c: 291 send_reply( &reply ); trace in request.c: 228 if (!current->reply_size) trace in request.c: 230 if ((ret = write( get_unix_fd( current->reply_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 232 } trace in request.c: 252 if (current->reply_data) trace in request.c: 257 return; trace in request.c: 292 } trace in request.c: 295 current = NULL; trace in request.c: 296 return; trace in request.c: 314 return; trace in thread.c: 202 } trace in fd.c: 1424 } trace in fd.c: 573 if (!--ret) break; trace in fd.c: 559 while (active_users) trace in fd.c: 561 timeout = get_next_timeout(); trace in fd.c: 473 static int get_next_timeout(void) trace in fd.c: 475 if (!list_empty( &timeout_list )) trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in fd.c: 480 gettimeofday( &now, NULL ); trace in fd.c: 484 list_init( &expired_list ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in fd.c: 494 else break; trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 507 if ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 509 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 510 int diff = (timeout->when.tv_sec - now.tv_sec) * 1000 trace in fd.c: 512 if (diff < 0) diff = 0; trace in fd.c: 513 return diff; trace in fd.c: 517 } trace in fd.c: 563 if (!active_users) break; /* last user removed by a timeout */ trace in fd.c: 565 ret = poll( pollfd, nb_users, timeout ); trace in fd.c: 566 if (ret > 0) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 572 fd_poll_event( poll_users[i], pollfd[i].revents ); trace in fd.c: 1423 fd->fd_ops->poll_event( fd, event ); trace in thread.c: 196 struct wine_thread *thread = get_fd_user( fd ); trace in fd.c: 1404 return fd->user; trace in fd.c: 1405 } trace in thread.c: 197 assert( thread->obj.ops == &thread_ops ); trace in thread.c: 199 if (event & (POLLERR | POLLHUP)) kill_thread( thread, 0 ); trace in thread.c: 200 else if (event & POLLIN) read_request( thread ); trace in request.c: 306 if (!thread->req_toread) /* no pending request */ trace in request.c: 308 if ((ret = read( get_unix_fd( thread->request_fd ), &thread->req, trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 310 if (!(thread->req_toread = thread->req.request_header.request_size)) trace in request.c: 313 call_req_handler( thread ); trace in request.c: 272 enum request req = thread->req.request_header.req; trace in request.c: 274 current = thread; trace in request.c: 275 current->reply_size = 0; trace in request.c: 276 clear_error(); trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in request.c: 277 memset( &reply, 0, sizeof(reply) ); trace in request.c: 279 if (debug_level) trace_request(); trace in trace.c: 3806 void trace_request(void) trace in trace.c: 3808 enum request req = current->req.request_header.req; trace in trace.c: 3809 if (req < REQ_NB_REQUESTS) trace in trace.c: 3811 fprintf( stderr, "%04x: %s(", current->id, req_names[req] ); trace in trace.c: 3812 if (req_dumpers[req]) trace in trace.c: 3814 cur_pos = 0; trace in trace.c: 3815 cur_data = get_req_data(); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in trace.c: 3816 cur_size = get_req_data_size(); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in trace.c: 3817 req_dumpers[req]( ¤t->req ); trace in trace.c: 963 fprintf( stderr, " access=%08x,", req->access ); trace in trace.c: 964 fprintf( stderr, " attributes=%08x,", req->attributes ); trace in trace.c: 965 fprintf( stderr, " initial=%08x,", req->initial ); trace in trace.c: 966 fprintf( stderr, " max=%08x,", req->max ); trace in trace.c: 967 fprintf( stderr, " name=" ); trace in trace.c: 968 dump_varargs_unicode_str( cur_size ); trace in trace.c: 199 fprintf( stderr, "L"" ); trace in trace.c: 200 dump_strW( cur_data, size / sizeof(WCHAR), stderr, """" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in trace.c: 201 fputc( '"', stderr ); trace in trace.c: 202 remove_data( size ); trace in trace.c: 48 cur_data = (const char *)cur_data + size; trace in trace.c: 49 cur_size -= size; trace in trace.c: 50 } trace in trace.c: 203 } trace in trace.c: 969 } trace in trace.c: 3819 fprintf( stderr, " )\n" ); 0009: create_semaphore( access=001f0003, attributes=00000000, initial=00000000, max=00000001, name=L"" ) trace in trace.c: 3820 } trace in trace.c: 3822 } trace in request.c: 281 if (req < REQ_NB_REQUESTS) trace in request.c: 283 req_handlers[req]( ¤t->req, &reply ); trace in semaphore.c: 152 reply->handle = 0; trace in semaphore.c: 153 get_req_unicode_str( &name ); trace in request.h: 83 str->str = get_req_data(); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in request.h: 84 str->len = (get_req_data_size() / sizeof(WCHAR)) * sizeof(WCHAR); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in request.h: 85 } trace in semaphore.c: 154 if ((sem = create_semaphore( &name, req->attributes, req->initial, req->max ))) trace in semaphore.c: 69 if (!max || (initial > max)) trace in semaphore.c: 74 if ((sem = create_named_object( sync_namespace, &semaphore_ops, name, attr ))) trace in object.c: 166 if (!name || !name->len) return alloc_object( ops ); trace in object.c: 145 struct object *obj = mem_alloc( ops->size ); trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in object.c: 146 if (obj) trace in object.c: 148 obj->refcount = 1; trace in object.c: 149 obj->ops = ops; trace in object.c: 150 obj->name = NULL; trace in object.c: 151 list_init( &obj->wait_queue ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in object.c: 153 list_add_head( &object_list, &obj->obj_list ); trace in list.h: 86 list_add_after( list, elem ); trace in list.h: 68 to_add->next = elem->next; trace in list.h: 69 to_add->prev = elem; trace in list.h: 70 elem->next->prev = to_add; trace in list.h: 71 elem->next = to_add; trace in list.h: 72 } trace in list.h: 87 } trace in object.c: 155 return obj; trace in object.c: 158 } trace in object.c: 191 } trace in semaphore.c: 76 if (get_error() != STATUS_OBJECT_NAME_EXISTS) trace in thread.h: 141 static inline unsigned int get_error(void) { return current ? current->error : global_error; } trace in semaphore.c: 79 sem->count = initial; trace in semaphore.c: 80 sem->max = max; trace in semaphore.c: 83 return sem; trace in semaphore.c: 84 } trace in semaphore.c: 156 reply->handle = alloc_handle( current->process, sem, req->access, trace in handle.c: 226 access &= ~RESERVED_ALL; trace in handle.c: 227 if (inherit) access |= RESERVED_INHERIT; trace in handle.c: 228 if (!process->handles) trace in handle.c: 233 return alloc_entry( process->handles, obj, access ); trace in handle.c: 204 struct handle_entry *entry = table->entries + table->free; trace in handle.c: 207 for (i = table->free; i <= table->last; i++, entry++) if (!entry->ptr) goto found; trace in handle.c: 208 if (i >= table->count) trace in handle.c: 213 table->last = i; trace in handle.c: 215 table->free = i + 1; trace in handle.c: 216 entry->ptr = grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 217 entry->access = access; trace in handle.c: 218 entry->fd = -1; trace in handle.c: 219 return index_to_handle(i); trace in handle.c: 72 return (obj_handle_t)((index + 1) << 2); trace in handle.c: 73 } trace in handle.c: 234 } trace in semaphore.c: 158 release_object( sem ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in semaphore.c: 160 } trace in request.c: 284 if (current) trace in request.c: 286 if (current->reply_fd) trace in request.c: 288 reply.reply_header.error = current->error; trace in request.c: 289 reply.reply_header.reply_size = current->reply_size; trace in request.c: 290 if (debug_level) trace_reply( req, &reply ); trace in trace.c: 3826 if (req < REQ_NB_REQUESTS) trace in trace.c: 3828 fprintf( stderr, "%04x: %s() = %s", trace in trace.c: 3797 if (status) trace in trace.c: 3802 sprintf( buffer, "%x", status ); trace in trace.c: 3803 return buffer; trace in trace.c: 3804 } trace in trace.c: 3830 if (reply_dumpers[req]) trace in trace.c: 3832 fprintf( stderr, " {" ); trace in trace.c: 3833 cur_pos = 0; trace in trace.c: 3834 cur_data = current->reply_data; trace in trace.c: 3835 cur_size = reply->reply_header.reply_size; trace in trace.c: 3836 reply_dumpers[req]( reply ); trace in trace.c: 973 fprintf( stderr, " handle=%p", req->handle ); trace in trace.c: 974 } trace in trace.c: 3837 fprintf( stderr, " }" ); trace in trace.c: 3839 fputc( '\n', stderr ); 0009: create_semaphore() = 0 { handle=c } trace in trace.c: 3840 } trace in trace.c: 3843 } trace in request.c: 291 send_reply( &reply ); trace in request.c: 228 if (!current->reply_size) trace in request.c: 230 if ((ret = write( get_unix_fd( current->reply_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 232 } trace in request.c: 252 if (current->reply_data) trace in request.c: 257 return; trace in request.c: 292 } trace in request.c: 295 current = NULL; trace in request.c: 296 return; trace in request.c: 314 return; trace in thread.c: 202 } trace in fd.c: 1424 } trace in fd.c: 573 if (!--ret) break; trace in fd.c: 559 while (active_users) trace in fd.c: 561 timeout = get_next_timeout(); trace in fd.c: 473 static int get_next_timeout(void) trace in fd.c: 475 if (!list_empty( &timeout_list )) trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in fd.c: 480 gettimeofday( &now, NULL ); trace in fd.c: 484 list_init( &expired_list ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in fd.c: 494 else break; trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 507 if ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 509 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 510 int diff = (timeout->when.tv_sec - now.tv_sec) * 1000 trace in fd.c: 512 if (diff < 0) diff = 0; trace in fd.c: 513 return diff; trace in fd.c: 517 } trace in fd.c: 563 if (!active_users) break; /* last user removed by a timeout */ trace in fd.c: 565 ret = poll( pollfd, nb_users, timeout ); trace in fd.c: 566 if (ret > 0) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 572 fd_poll_event( poll_users[i], pollfd[i].revents ); trace in fd.c: 1423 fd->fd_ops->poll_event( fd, event ); trace in thread.c: 196 struct wine_thread *thread = get_fd_user( fd ); trace in fd.c: 1404 return fd->user; trace in fd.c: 1405 } trace in thread.c: 197 assert( thread->obj.ops == &thread_ops ); trace in thread.c: 199 if (event & (POLLERR | POLLHUP)) kill_thread( thread, 0 ); trace in thread.c: 200 else if (event & POLLIN) read_request( thread ); trace in request.c: 306 if (!thread->req_toread) /* no pending request */ trace in request.c: 308 if ((ret = read( get_unix_fd( thread->request_fd ), &thread->req, trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 310 if (!(thread->req_toread = thread->req.request_header.request_size)) trace in request.c: 316 if (!(thread->req_data = malloc( thread->req_toread ))) trace in request.c: 323 ret = read( get_unix_fd( thread->request_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 327 if (ret <= 0) break; trace in request.c: 328 if (!(thread->req_toread -= ret)) trace in request.c: 330 call_req_handler( thread ); trace in request.c: 272 enum request req = thread->req.request_header.req; trace in request.c: 274 current = thread; trace in request.c: 275 current->reply_size = 0; trace in request.c: 276 clear_error(); trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in request.c: 277 memset( &reply, 0, sizeof(reply) ); trace in request.c: 279 if (debug_level) trace_request(); trace in trace.c: 3806 void trace_request(void) trace in trace.c: 3808 enum request req = current->req.request_header.req; trace in trace.c: 3809 if (req < REQ_NB_REQUESTS) trace in trace.c: 3811 fprintf( stderr, "%04x: %s(", current->id, req_names[req] ); trace in trace.c: 3812 if (req_dumpers[req]) trace in trace.c: 3814 cur_pos = 0; trace in trace.c: 3815 cur_data = get_req_data(); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in trace.c: 3816 cur_size = get_req_data_size(); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in trace.c: 3817 req_dumpers[req]( ¤t->req ); trace in trace.c: 880 fprintf( stderr, " flags=%d,", req->flags ); trace in trace.c: 881 fprintf( stderr, " cookie=%p,", req->cookie ); trace in trace.c: 882 fprintf( stderr, " signal=%p,", req->signal ); trace in trace.c: 883 fprintf( stderr, " timeout=" ); trace in trace.c: 884 dump_abs_time( &req->timeout ); trace in trace.c: 68 if (!time->sec && !time->usec) trace in trace.c: 73 gettimeofday( &tv, NULL ); trace in trace.c: 74 secs = time->sec - tv.tv_sec; trace in trace.c: 75 if ((usecs = time->usec - tv.tv_usec) < 0) trace in trace.c: 77 usecs += 1000000; trace in trace.c: 78 secs--; trace in trace.c: 80 if (secs > 0 || (secs == 0 && usecs >= 0)) trace in trace.c: 81 fprintf( stderr, "%d.%06d (+%d.%06d)", time->sec, time->usec, secs, usecs ); trace in trace.c: 84 } trace in trace.c: 885 fprintf( stderr, "," ); trace in trace.c: 886 fprintf( stderr, " handles=" ); trace in trace.c: 887 dump_varargs_handles( cur_size ); trace in trace.c: 148 const obj_handle_t *data = cur_data; trace in trace.c: 149 size_t len = size / sizeof(*data); trace in trace.c: 151 fputc( '{', stderr ); trace in trace.c: 152 while (len > 0) trace in trace.c: 154 fprintf( stderr, "%p", *data++ ); trace in trace.c: 155 if (--len) fputc( ',', stderr ); trace in trace.c: 152 while (len > 0) trace in trace.c: 157 fputc( '}', stderr ); trace in trace.c: 158 remove_data( size ); trace in trace.c: 48 cur_data = (const char *)cur_data + size; trace in trace.c: 49 cur_size -= size; trace in trace.c: 50 } trace in trace.c: 159 } trace in trace.c: 888 } trace in trace.c: 3819 fprintf( stderr, " )\n" ); 0009: select( flags=12, cookie=2ff1fac4, signal=0, timeout=1135997779.339286 (+3.880111), handles={c} ) trace in trace.c: 3820 } trace in trace.c: 3822 } trace in request.c: 281 if (req < REQ_NB_REQUESTS) trace in request.c: 283 req_handlers[req]( ¤t->req, &reply ); trace in thread.c: 1001 int count = get_req_data_size() / sizeof(int); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in thread.c: 1002 select_on( count, req->cookie, get_req_data(), req->flags, &req->timeout, req->signal ); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in thread.c: 546 if ((count < 0) || (count > MAXIMUM_WAIT_OBJECTS)) trace in thread.c: 551 for (i = 0; i < count; i++) trace in thread.c: 553 if (!(objects[i] = get_handle_obj( current->process, handles[i], SYNCHRONIZE, NULL ))) trace in handle.c: 388 if (!(obj = get_magic_handle( handle ))) trace in handle.c: 369 switch((unsigned long)handle) trace in handle.c: 377 return NULL; trace in handle.c: 390 if (!(entry = get_handle( process, handle ))) return NULL; trace in handle.c: 251 struct handle_table *table = process->handles; trace in handle.c: 255 if (handle_is_global(handle)) trace in handle.c: 85 return ((unsigned long)handle ^ HANDLE_OBFUSCATOR) < 0x10000; trace in handle.c: 86 } trace in handle.c: 260 if (!table) goto error; trace in handle.c: 261 index = handle_to_index( handle ); trace in handle.c: 76 return ((unsigned int)handle >> 2) - 1; trace in handle.c: 77 } trace in handle.c: 262 if (index < 0) goto error; trace in handle.c: 263 if (index > table->last) goto error; trace in handle.c: 264 entry = table->entries + index; trace in handle.c: 265 if (!entry->ptr) goto error; trace in handle.c: 266 return entry; trace in handle.c: 391 if ((entry->access & access) != access) trace in handle.c: 396 obj = entry->ptr; trace in handle.c: 398 if (ops && (obj->ops != ops)) trace in handle.c: 403 return grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 404 } trace in thread.c: 551 for (i = 0; i < count; i++) trace in thread.c: 557 if (i < count) goto done; trace in thread.c: 558 if (!wait_on( count, objects, flags, timeout )) goto done; trace in thread.c: 387 if (!(wait = mem_alloc( sizeof(*wait) + (count-1) * sizeof(*entry) ))) return 0; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in thread.c: 388 wait->next = current->wait; trace in thread.c: 389 wait->thread = current; trace in thread.c: 390 wait->count = count; trace in thread.c: 391 wait->flags = flags; trace in thread.c: 392 wait->user = NULL; trace in thread.c: 393 current->wait = wait; trace in thread.c: 394 if (flags & SELECT_TIMEOUT) trace in thread.c: 396 wait->timeout.tv_sec = timeout->sec; trace in thread.c: 397 wait->timeout.tv_usec = timeout->usec; trace in thread.c: 400 for (i = 0, entry = wait->queues; i < count; i++, entry++) trace in thread.c: 402 struct object *obj = objects[i]; trace in thread.c: 403 entry->thread = current; trace in thread.c: 404 if (!obj->ops->add_queue( obj, entry )) trace in thread.c: 352 grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in thread.c: 353 entry->obj = obj; trace in thread.c: 354 list_add_tail( &obj->wait_queue, &entry->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in thread.c: 355 return 1; trace in thread.c: 356 } trace in thread.c: 400 for (i = 0, entry = wait->queues; i < count; i++, entry++) trace in thread.c: 411 return 1; trace in thread.c: 561 if (signal_obj) trace in thread.c: 572 if ((ret = check_wait( current )) != -1) trace in thread.c: 418 struct wine_thread_wait *wait = thread->wait; trace in thread.c: 419 struct wait_queue_entry *entry = wait->queues; trace in thread.c: 422 if (thread->process->suspend + thread->suspend > 0) return -1; trace in thread.c: 424 assert( wait ); trace in thread.c: 425 if (wait->flags & SELECT_ALL) trace in thread.c: 442 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 444 if (!entry->obj->ops->signaled( entry->obj, thread )) continue; trace in semaphore.c: 119 struct semaphore *sem = (struct semaphore *)obj; trace in semaphore.c: 120 assert( obj->ops == &semaphore_ops ); trace in semaphore.c: 121 return (sem->count > 0); trace in semaphore.c: 122 } trace in thread.c: 444 if (!entry->obj->ops->signaled( entry->obj, thread )) continue; trace in thread.c: 442 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 454 if ((wait->flags & SELECT_INTERRUPTIBLE) && !list_empty(&thread->system_apc)) return STATUS_USER_APC; trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in thread.c: 455 if ((wait->flags & SELECT_ALERTABLE) && !list_empty(&thread->user_apc)) return STATUS_USER_APC; trace in thread.c: 456 if (wait->flags & SELECT_TIMEOUT) trace in thread.c: 459 gettimeofday( &now, NULL ); trace in thread.c: 460 if (!time_before( &now, &wait->timeout )) return STATUS_TIMEOUT; trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in thread.c: 462 return -1; trace in thread.c: 581 if (flags & SELECT_TIMEOUT) trace in thread.c: 583 if (!(current->wait->user = add_timeout_user( ¤t->wait->timeout, trace in fd.c: 301 if (!(user = mem_alloc( sizeof(*user) ))) return NULL; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in fd.c: 302 user->when = *when; trace in fd.c: 303 user->callback = func; trace in fd.c: 304 user->private = private; trace in fd.c: 308 LIST_FOR_EACH( ptr, &timeout_list ) trace in fd.c: 310 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 311 if (!time_before( &timeout->when, when )) break; trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 94 ((t1->tv_sec == t2->tv_sec) && (t1->tv_usec < t2->tv_usec))); trace in file.h: 95 } trace in fd.c: 311 if (!time_before( &timeout->when, when )) break; trace in fd.c: 313 list_add_before( ptr, &user->entry ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in fd.c: 314 return user; trace in thread.c: 590 current->wait->cookie = cookie; trace in thread.c: 591 set_error( STATUS_PENDING ); trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.c: 594 while (--i >= 0) release_object( objects[i] ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in thread.c: 595 } trace in thread.c: 1003 } trace in request.c: 284 if (current) trace in request.c: 286 if (current->reply_fd) trace in request.c: 288 reply.reply_header.error = current->error; trace in request.c: 289 reply.reply_header.reply_size = current->reply_size; trace in request.c: 290 if (debug_level) trace_reply( req, &reply ); trace in trace.c: 3826 if (req < REQ_NB_REQUESTS) trace in trace.c: 3828 fprintf( stderr, "%04x: %s() = %s", trace in trace.c: 3797 if (status) trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3804 } trace in trace.c: 3830 if (reply_dumpers[req]) trace in trace.c: 3839 fputc( '\n', stderr ); 0009: select() = PENDING trace in trace.c: 3840 } trace in trace.c: 3843 } trace in request.c: 291 send_reply( &reply ); trace in request.c: 228 if (!current->reply_size) trace in request.c: 230 if ((ret = write( get_unix_fd( current->reply_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 232 } trace in request.c: 252 if (current->reply_data) trace in request.c: 257 return; trace in request.c: 292 } trace in request.c: 295 current = NULL; trace in request.c: 296 return; trace in request.c: 331 free( thread->req_data ); trace in request.c: 332 thread->req_data = NULL; trace in request.c: 333 return; trace in thread.c: 202 } trace in fd.c: 1424 } trace in fd.c: 573 if (!--ret) break; trace in fd.c: 559 while (active_users) trace in fd.c: 561 timeout = get_next_timeout(); trace in fd.c: 473 static int get_next_timeout(void) trace in fd.c: 475 if (!list_empty( &timeout_list )) trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in fd.c: 480 gettimeofday( &now, NULL ); trace in fd.c: 484 list_init( &expired_list ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in fd.c: 494 else break; trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 507 if ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 509 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 510 int diff = (timeout->when.tv_sec - now.tv_sec) * 1000 trace in fd.c: 512 if (diff < 0) diff = 0; trace in fd.c: 513 return diff; trace in fd.c: 517 } trace in fd.c: 563 if (!active_users) break; /* last user removed by a timeout */ trace in fd.c: 565 ret = poll( pollfd, nb_users, timeout ); trace in fd.c: 566 if (ret > 0) trace in fd.c: 559 while (active_users) trace in fd.c: 561 timeout = get_next_timeout(); trace in fd.c: 473 static int get_next_timeout(void) trace in fd.c: 475 if (!list_empty( &timeout_list )) trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in fd.c: 480 gettimeofday( &now, NULL ); trace in fd.c: 484 list_init( &expired_list ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 94 ((t1->tv_sec == t2->tv_sec) && (t1->tv_usec < t2->tv_usec))); trace in file.h: 95 } trace in fd.c: 491 list_remove( &timeout->entry ); trace in list.h: 98 elem->next->prev = elem->prev; trace in list.h: 99 elem->prev->next = elem->next; trace in list.h: 100 } trace in fd.c: 492 list_add_tail( &expired_list, &timeout->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in fd.c: 493 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 94 ((t1->tv_sec == t2->tv_sec) && (t1->tv_usec < t2->tv_usec))); trace in file.h: 95 } trace in fd.c: 491 list_remove( &timeout->entry ); trace in list.h: 98 elem->next->prev = elem->prev; trace in list.h: 99 elem->prev->next = elem->next; trace in list.h: 100 } trace in fd.c: 492 list_add_tail( &expired_list, &timeout->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in fd.c: 493 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 501 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 502 list_remove( &timeout->entry ); trace in list.h: 98 elem->next->prev = elem->prev; trace in list.h: 99 elem->prev->next = elem->next; trace in list.h: 100 } trace in fd.c: 503 timeout->callback( timeout->private ); trace in thread.c: 508 struct wine_thread_wait *wait = ptr; trace in thread.c: 509 struct wine_thread *thread = wait->thread; trace in thread.c: 510 void *cookie = wait->cookie; trace in thread.c: 512 wait->user = NULL; trace in thread.c: 513 if (thread->wait != wait) return; /* not the top-level wait, ignore it */ trace in thread.c: 514 if (thread->suspend + thread->process->suspend > 0) return; /* suspended, ignore it */ trace in thread.c: 516 if (debug_level) fprintf( stderr, "%04x: *wakeup* signaled=%d cookie=%p\n", 0009: *wakeup* signaled=258 cookie=2ff1fac4 trace in thread.c: 518 end_wait( thread ); trace in thread.c: 368 struct wine_thread_wait *wait = thread->wait; trace in thread.c: 372 assert( wait ); trace in thread.c: 373 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 374 entry->obj->ops->remove_queue( entry->obj, entry ); trace in thread.c: 361 list_remove( &entry->entry ); trace in list.h: 98 elem->next->prev = elem->prev; trace in list.h: 99 elem->prev->next = elem->next; trace in list.h: 100 } trace in thread.c: 362 release_object( obj ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in thread.c: 363 } trace in thread.c: 373 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 375 if (wait->user) remove_timeout_user( wait->user ); trace in thread.c: 376 thread->wait = wait->next; trace in thread.c: 377 free( wait ); trace in thread.c: 378 } trace in thread.c: 519 if (send_thread_wakeup( thread, cookie, STATUS_TIMEOUT ) == -1) return; trace in thread.c: 471 reply.cookie = cookie; trace in thread.c: 472 reply.signaled = signaled; trace in thread.c: 473 if ((ret = write( get_unix_fd( thread->wait_fd ), &reply, sizeof(reply) )) == sizeof(reply)) trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in thread.c: 474 return 0; trace in thread.c: 482 } trace in thread.c: 521 wake_thread( thread ); trace in thread.c: 491 for (count = 0; thread->wait; count++) trace in thread.c: 502 return count; trace in thread.c: 522 } trace in fd.c: 504 free( timeout ); trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 501 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 502 list_remove( &timeout->entry ); trace in list.h: 98 elem->next->prev = elem->prev; trace in list.h: 99 elem->prev->next = elem->next; trace in list.h: 100 } trace in fd.c: 503 timeout->callback( timeout->private ); trace in registry.c: 1651 save_timeout_user = NULL; trace in registry.c: 1652 for (i = 0; i < save_branch_count; i++) trace in registry.c: 1653 save_branch( save_branch_info[i].key, save_branch_info[i].path ); trace in registry.c: 1563 char *p, *real, *tmp = NULL; trace in registry.c: 1564 int fd, count = 0, ret = 0, by_symlink; trace in registry.c: 1567 if (!(key->flags & KEY_DIRTY)) trace in registry.c: 1569 if (debug_level > 1) dump_operation( key, NULL, "Not saving clean" ); trace in registry.c: 254 fprintf( stderr, "%s key ", op ); trace in registry.c: 255 if (key) dump_path( key, NULL, stderr ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 174 dump_path( key->parent, base, f ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 175 fprintf( f, "\\" ); trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 257 if (value) trace in registry.c: 262 else fprintf( stderr, "\n" ); Not saving clean key \Machine trace in registry.c: 263 } trace in registry.c: 1570 return 1; trace in registry.c: 1652 for (i = 0; i < save_branch_count; i++) trace in registry.c: 1653 save_branch( save_branch_info[i].key, save_branch_info[i].path ); trace in registry.c: 1563 char *p, *real, *tmp = NULL; trace in registry.c: 1564 int fd, count = 0, ret = 0, by_symlink; trace in registry.c: 1567 if (!(key->flags & KEY_DIRTY)) trace in registry.c: 1569 if (debug_level > 1) dump_operation( key, NULL, "Not saving clean" ); trace in registry.c: 254 fprintf( stderr, "%s key ", op ); trace in registry.c: 255 if (key) dump_path( key, NULL, stderr ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 174 dump_path( key->parent, base, f ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 174 dump_path( key->parent, base, f ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 175 fprintf( f, "\\" ); trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 175 fprintf( f, "\\" ); trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 257 if (value) trace in registry.c: 262 else fprintf( stderr, "\n" ); Not saving clean key \User\.Default trace in registry.c: 263 } trace in registry.c: 1570 return 1; trace in registry.c: 1652 for (i = 0; i < save_branch_count; i++) trace in registry.c: 1653 save_branch( save_branch_info[i].key, save_branch_info[i].path ); trace in registry.c: 1563 char *p, *real, *tmp = NULL; trace in registry.c: 1564 int fd, count = 0, ret = 0, by_symlink; trace in registry.c: 1567 if (!(key->flags & KEY_DIRTY)) trace in registry.c: 1569 if (debug_level > 1) dump_operation( key, NULL, "Not saving clean" ); trace in registry.c: 254 fprintf( stderr, "%s key ", op ); trace in registry.c: 255 if (key) dump_path( key, NULL, stderr ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 174 dump_path( key->parent, base, f ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 174 dump_path( key->parent, base, f ); trace in registry.c: 172 if (key->parent && key->parent != base) trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 175 fprintf( f, "\\" ); trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 175 fprintf( f, "\\" ); trace in registry.c: 177 dump_strW( key->name, key->namelen / sizeof(WCHAR), f, "[]" ); trace in unicode.c: 34 char *pos = buffer; trace in unicode.c: 35 int count = 0; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 39 if (pos > buffer + sizeof(buffer) - 8) trace in unicode.c: 45 if (*str > 127) /* hex escape */ trace in unicode.c: 53 if (*str < 32) /* octal or C escape */ trace in unicode.c: 64 if (*str == '\' || *str == escape[0] || *str == escape[1]) *pos++ = '\'; trace in unicode.c: 65 *pos++ = *str; trace in unicode.c: 37 for (; len; str++, len--) trace in unicode.c: 67 fwrite( buffer, pos - buffer, 1, f ); trace in unicode.c: 68 count += pos - buffer; trace in unicode.c: 69 return count; trace in registry.c: 178 } trace in registry.c: 257 if (value) trace in registry.c: 262 else fprintf( stderr, "\n" ); Not saving clean key \User\S-1-5-4 trace in registry.c: 263 } trace in registry.c: 1570 return 1; trace in registry.c: 1652 for (i = 0; i < save_branch_count; i++) trace in registry.c: 1654 set_periodic_save_timer(); trace in registry.c: 1658 static void set_periodic_save_timer(void) trace in registry.c: 1662 gettimeofday( &next, NULL ); trace in registry.c: 1663 add_timeout( &next, save_period ); trace in fd.c: 327 if (timeout) trace in fd.c: 329 long sec = timeout / 1000; trace in fd.c: 330 if ((when->tv_usec += (timeout - 1000*sec) * 1000) >= 1000000) trace in fd.c: 335 when->tv_sec += sec; trace in fd.c: 337 } trace in registry.c: 1664 if (save_timeout_user) remove_timeout_user( save_timeout_user ); trace in registry.c: 1665 save_timeout_user = add_timeout_user( &next, periodic_save, NULL ); trace in fd.c: 301 if (!(user = mem_alloc( sizeof(*user) ))) return NULL; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in fd.c: 302 user->when = *when; trace in fd.c: 303 user->callback = func; trace in fd.c: 304 user->private = private; trace in fd.c: 308 LIST_FOR_EACH( ptr, &timeout_list ) trace in fd.c: 313 list_add_before( ptr, &user->entry ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in fd.c: 314 return user; trace in registry.c: 1666 } trace in registry.c: 1655 } trace in fd.c: 504 free( timeout ); trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 507 if ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 509 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 510 int diff = (timeout->when.tv_sec - now.tv_sec) * 1000 trace in fd.c: 512 if (diff < 0) diff = 0; trace in fd.c: 513 return diff; trace in fd.c: 517 } trace in fd.c: 563 if (!active_users) break; /* last user removed by a timeout */ trace in fd.c: 565 ret = poll( pollfd, nb_users, timeout ); trace in fd.c: 566 if (ret > 0) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 568 for (i = 0; i < nb_users; i++) trace in fd.c: 570 if (pollfd[i].revents) trace in fd.c: 572 fd_poll_event( poll_users[i], pollfd[i].revents ); trace in fd.c: 1423 fd->fd_ops->poll_event( fd, event ); trace in thread.c: 196 struct wine_thread *thread = get_fd_user( fd ); trace in fd.c: 1404 return fd->user; trace in fd.c: 1405 } trace in thread.c: 197 assert( thread->obj.ops == &thread_ops ); trace in thread.c: 199 if (event & (POLLERR | POLLHUP)) kill_thread( thread, 0 ); trace in thread.c: 200 else if (event & POLLIN) read_request( thread ); trace in request.c: 306 if (!thread->req_toread) /* no pending request */ trace in request.c: 308 if ((ret = read( get_unix_fd( thread->request_fd ), &thread->req, trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 310 if (!(thread->req_toread = thread->req.request_header.request_size)) trace in request.c: 316 if (!(thread->req_data = malloc( thread->req_toread ))) trace in request.c: 323 ret = read( get_unix_fd( thread->request_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 327 if (ret <= 0) break; trace in request.c: 328 if (!(thread->req_toread -= ret)) trace in request.c: 330 call_req_handler( thread ); trace in request.c: 272 enum request req = thread->req.request_header.req; trace in request.c: 274 current = thread; trace in request.c: 275 current->reply_size = 0; trace in request.c: 276 clear_error(); trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.h: 143 static inline void clear_error(void) { set_error(0); } trace in request.c: 277 memset( &reply, 0, sizeof(reply) ); trace in request.c: 279 if (debug_level) trace_request(); trace in trace.c: 3806 void trace_request(void) trace in trace.c: 3808 enum request req = current->req.request_header.req; trace in trace.c: 3809 if (req < REQ_NB_REQUESTS) trace in trace.c: 3811 fprintf( stderr, "%04x: %s(", current->id, req_names[req] ); trace in trace.c: 3812 if (req_dumpers[req]) trace in trace.c: 3814 cur_pos = 0; trace in trace.c: 3815 cur_data = get_req_data(); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in trace.c: 3816 cur_size = get_req_data_size(); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in trace.c: 3817 req_dumpers[req]( ¤t->req ); trace in trace.c: 880 fprintf( stderr, " flags=%d,", req->flags ); trace in trace.c: 881 fprintf( stderr, " cookie=%p,", req->cookie ); trace in trace.c: 882 fprintf( stderr, " signal=%p,", req->signal ); trace in trace.c: 883 fprintf( stderr, " timeout=" ); trace in trace.c: 884 dump_abs_time( &req->timeout ); trace in trace.c: 68 if (!time->sec && !time->usec) trace in trace.c: 73 gettimeofday( &tv, NULL ); trace in trace.c: 74 secs = time->sec - tv.tv_sec; trace in trace.c: 75 if ((usecs = time->usec - tv.tv_usec) < 0) trace in trace.c: 77 usecs += 1000000; trace in trace.c: 78 secs--; trace in trace.c: 80 if (secs > 0 || (secs == 0 && usecs >= 0)) trace in trace.c: 81 fprintf( stderr, "%d.%06d (+%d.%06d)", time->sec, time->usec, secs, usecs ); trace in trace.c: 84 } trace in trace.c: 885 fprintf( stderr, "," ); trace in trace.c: 886 fprintf( stderr, " handles=" ); trace in trace.c: 887 dump_varargs_handles( cur_size ); trace in trace.c: 148 const obj_handle_t *data = cur_data; trace in trace.c: 149 size_t len = size / sizeof(*data); trace in trace.c: 151 fputc( '{', stderr ); trace in trace.c: 152 while (len > 0) trace in trace.c: 154 fprintf( stderr, "%p", *data++ ); trace in trace.c: 155 if (--len) fputc( ',', stderr ); trace in trace.c: 152 while (len > 0) trace in trace.c: 157 fputc( '}', stderr ); trace in trace.c: 158 remove_data( size ); trace in trace.c: 48 cur_data = (const char *)cur_data + size; trace in trace.c: 49 cur_size -= size; trace in trace.c: 50 } trace in trace.c: 159 } trace in trace.c: 888 } trace in trace.c: 3819 fprintf( stderr, " )\n" ); 0009: select( flags=12, cookie=2ff1fac4, signal=0, timeout=1135997848.365019 (+58.908214), handles={c} ) trace in trace.c: 3820 } trace in trace.c: 3822 } trace in request.c: 281 if (req < REQ_NB_REQUESTS) trace in request.c: 283 req_handlers[req]( ¤t->req, &reply ); trace in thread.c: 1001 int count = get_req_data_size() / sizeof(int); trace in request.h: 77 return current->req.request_header.request_size; trace in request.h: 78 } trace in thread.c: 1002 select_on( count, req->cookie, get_req_data(), req->flags, &req->timeout, req->signal ); trace in request.h: 71 return current->req_data; trace in request.h: 72 } trace in thread.c: 546 if ((count < 0) || (count > MAXIMUM_WAIT_OBJECTS)) trace in thread.c: 551 for (i = 0; i < count; i++) trace in thread.c: 553 if (!(objects[i] = get_handle_obj( current->process, handles[i], SYNCHRONIZE, NULL ))) trace in handle.c: 388 if (!(obj = get_magic_handle( handle ))) trace in handle.c: 369 switch((unsigned long)handle) trace in handle.c: 377 return NULL; trace in handle.c: 390 if (!(entry = get_handle( process, handle ))) return NULL; trace in handle.c: 251 struct handle_table *table = process->handles; trace in handle.c: 255 if (handle_is_global(handle)) trace in handle.c: 85 return ((unsigned long)handle ^ HANDLE_OBFUSCATOR) < 0x10000; trace in handle.c: 86 } trace in handle.c: 260 if (!table) goto error; trace in handle.c: 261 index = handle_to_index( handle ); trace in handle.c: 76 return ((unsigned int)handle >> 2) - 1; trace in handle.c: 77 } trace in handle.c: 262 if (index < 0) goto error; trace in handle.c: 263 if (index > table->last) goto error; trace in handle.c: 264 entry = table->entries + index; trace in handle.c: 265 if (!entry->ptr) goto error; trace in handle.c: 266 return entry; trace in handle.c: 391 if ((entry->access & access) != access) trace in handle.c: 396 obj = entry->ptr; trace in handle.c: 398 if (ops && (obj->ops != ops)) trace in handle.c: 403 return grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in handle.c: 404 } trace in thread.c: 551 for (i = 0; i < count; i++) trace in thread.c: 557 if (i < count) goto done; trace in thread.c: 558 if (!wait_on( count, objects, flags, timeout )) goto done; trace in thread.c: 387 if (!(wait = mem_alloc( sizeof(*wait) + (count-1) * sizeof(*entry) ))) return 0; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in thread.c: 388 wait->next = current->wait; trace in thread.c: 389 wait->thread = current; trace in thread.c: 390 wait->count = count; trace in thread.c: 391 wait->flags = flags; trace in thread.c: 392 wait->user = NULL; trace in thread.c: 393 current->wait = wait; trace in thread.c: 394 if (flags & SELECT_TIMEOUT) trace in thread.c: 396 wait->timeout.tv_sec = timeout->sec; trace in thread.c: 397 wait->timeout.tv_usec = timeout->usec; trace in thread.c: 400 for (i = 0, entry = wait->queues; i < count; i++, entry++) trace in thread.c: 402 struct object *obj = objects[i]; trace in thread.c: 403 entry->thread = current; trace in thread.c: 404 if (!obj->ops->add_queue( obj, entry )) trace in thread.c: 352 grab_object( obj ); trace in object.c: 208 struct object *obj = (struct object *)ptr; trace in object.c: 209 assert( obj->refcount < INT_MAX ); trace in object.c: 210 obj->refcount++; trace in object.c: 211 return obj; trace in object.c: 212 } trace in thread.c: 353 entry->obj = obj; trace in thread.c: 354 list_add_tail( &obj->wait_queue, &entry->entry ); trace in list.h: 92 list_add_before( list, elem ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in list.h: 93 } trace in thread.c: 355 return 1; trace in thread.c: 356 } trace in thread.c: 400 for (i = 0, entry = wait->queues; i < count; i++, entry++) trace in thread.c: 411 return 1; trace in thread.c: 561 if (signal_obj) trace in thread.c: 572 if ((ret = check_wait( current )) != -1) trace in thread.c: 418 struct wine_thread_wait *wait = thread->wait; trace in thread.c: 419 struct wait_queue_entry *entry = wait->queues; trace in thread.c: 422 if (thread->process->suspend + thread->suspend > 0) return -1; trace in thread.c: 424 assert( wait ); trace in thread.c: 425 if (wait->flags & SELECT_ALL) trace in thread.c: 442 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 444 if (!entry->obj->ops->signaled( entry->obj, thread )) continue; trace in semaphore.c: 119 struct semaphore *sem = (struct semaphore *)obj; trace in semaphore.c: 120 assert( obj->ops == &semaphore_ops ); trace in semaphore.c: 121 return (sem->count > 0); trace in semaphore.c: 122 } trace in thread.c: 444 if (!entry->obj->ops->signaled( entry->obj, thread )) continue; trace in thread.c: 442 for (i = 0, entry = wait->queues; i < wait->count; i++, entry++) trace in thread.c: 454 if ((wait->flags & SELECT_INTERRUPTIBLE) && !list_empty(&thread->system_apc)) return STATUS_USER_APC; trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in thread.c: 455 if ((wait->flags & SELECT_ALERTABLE) && !list_empty(&thread->user_apc)) return STATUS_USER_APC; trace in thread.c: 456 if (wait->flags & SELECT_TIMEOUT) trace in thread.c: 459 gettimeofday( &now, NULL ); trace in thread.c: 460 if (!time_before( &now, &wait->timeout )) return STATUS_TIMEOUT; trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in thread.c: 462 return -1; trace in thread.c: 581 if (flags & SELECT_TIMEOUT) trace in thread.c: 583 if (!(current->wait->user = add_timeout_user( ¤t->wait->timeout, trace in fd.c: 301 if (!(user = mem_alloc( sizeof(*user) ))) return NULL; trace in object.c: 75 void *ptr = malloc( size ); trace in object.c: 76 if (ptr) memset( ptr, 0x55, size ); trace in object.c: 78 return ptr; trace in object.c: 79 } trace in fd.c: 302 user->when = *when; trace in fd.c: 303 user->callback = func; trace in fd.c: 304 user->private = private; trace in fd.c: 308 LIST_FOR_EACH( ptr, &timeout_list ) trace in fd.c: 310 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 311 if (!time_before( &timeout->when, when )) break; trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in fd.c: 308 LIST_FOR_EACH( ptr, &timeout_list ) trace in fd.c: 313 list_add_before( ptr, &user->entry ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in fd.c: 314 return user; trace in thread.c: 590 current->wait->cookie = cookie; trace in thread.c: 591 set_error( STATUS_PENDING ); trace in thread.h: 142 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; } trace in thread.c: 594 while (--i >= 0) release_object( objects[i] ); trace in object.c: 217 struct object *obj = (struct object *)ptr; trace in object.c: 218 assert( obj->refcount ); trace in object.c: 219 if (!--obj->refcount) trace in object.c: 231 } trace in thread.c: 595 } trace in thread.c: 1003 } trace in request.c: 284 if (current) trace in request.c: 286 if (current->reply_fd) trace in request.c: 288 reply.reply_header.error = current->error; trace in request.c: 289 reply.reply_header.reply_size = current->reply_size; trace in request.c: 290 if (debug_level) trace_reply( req, &reply ); trace in trace.c: 3826 if (req < REQ_NB_REQUESTS) trace in trace.c: 3828 fprintf( stderr, "%04x: %s() = %s", trace in trace.c: 3797 if (status) trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3799 for (i = 0; status_names[i].name; i++) trace in trace.c: 3800 if (status_names[i].value == status) return status_names[i].name; trace in trace.c: 3804 } trace in trace.c: 3830 if (reply_dumpers[req]) trace in trace.c: 3839 fputc( '\n', stderr ); 0009: select() = PENDING trace in trace.c: 3840 } trace in trace.c: 3843 } trace in request.c: 291 send_reply( &reply ); trace in request.c: 228 if (!current->reply_size) trace in request.c: 230 if ((ret = write( get_unix_fd( current->reply_fd ), trace in fd.c: 1410 if (fd->unix_fd == -1) set_error( STATUS_VOLUME_DISMOUNTED ); trace in fd.c: 1411 return fd->unix_fd; trace in fd.c: 1412 } trace in request.c: 232 } trace in request.c: 252 if (current->reply_data) trace in request.c: 257 return; trace in request.c: 292 } trace in request.c: 295 current = NULL; trace in request.c: 296 return; trace in request.c: 331 free( thread->req_data ); trace in request.c: 332 thread->req_data = NULL; trace in request.c: 333 return; trace in thread.c: 202 } trace in fd.c: 1424 } trace in fd.c: 573 if (!--ret) break; trace in fd.c: 559 while (active_users) trace in fd.c: 561 timeout = get_next_timeout(); trace in fd.c: 473 static int get_next_timeout(void) trace in fd.c: 475 if (!list_empty( &timeout_list )) trace in list.h: 133 return list->next == list; trace in list.h: 134 } trace in fd.c: 480 gettimeofday( &now, NULL ); trace in fd.c: 484 list_init( &expired_list ); trace in list.h: 139 list->next = list->prev = list; trace in list.h: 140 } trace in fd.c: 485 while ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 487 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 489 if (!time_before( &now, &timeout->when )) trace in file.h: 93 return ((t1->tv_sec < t2->tv_sec) || trace in file.h: 95 } trace in fd.c: 494 else break; trace in fd.c: 499 while ((ptr = list_head( &expired_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 507 if ((ptr = list_head( &timeout_list )) != NULL) trace in list.h: 121 return list_next( list, list ); trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in list.h: 122 } trace in fd.c: 509 struct timeout_user *timeout = LIST_ENTRY( ptr, struct timeout_user, entry ); trace in fd.c: 510 int diff = (timeout->when.tv_sec - now.tv_sec) * 1000 trace in fd.c: 512 if (diff < 0) diff = 0; trace in fd.c: 513 return diff; trace in fd.c: 517 } trace in fd.c: 563 if (!active_users) break; /* last user removed by a timeout */ trace in fd.c: 565 ret = poll( pollfd, nb_users, timeout ); ^C Interrupt in poll at 0xd0265ff4 0xd0265ff4 (poll+0x80) 80410014 lwz r2,0x14(r1) (dbx) q hac1dev:ghart$
hac1dev:ghart$ dbx ./simpleClient Type 'help' for help. reading symbolic information ...trac e(dbx) [1] trace (dbx) r trace in main.C: 59 if (wine_main_preload_info) trace in main.C: 68 AIX_set_pthread_funcs (); /* sets up thread function call table */ trace in pthread.C: 190 { trace in pthread.C: 191 wine_pthread_set_functions (&AIX_pthread_functions, trace in port.c: 47 memcpy( &pthread_functions, functions, min( size, sizeof(pthread_functions) )); trace in port.c: 48 } trace in pthread.C: 193 } trace in main.C: 70 wine_thread_init (); /* thread initialization stuff */ trace in thread.c: 111 void wine_thread_init(void) trace in thread.c: 120 peb.NumberOfProcessors = 1; trace in thread.c: 121 peb.ProcessParameters = ¶ms; trace in thread.c: 122 peb.TlsBitmap = &tls_bitmap; trace in thread.c: 123 peb.TlsExpansionBitmap = &tls_expansion_bitmap; trace in thread.c: 124 peb.LdrData = &ldr; trace in thread.c: 125 params.CurrentDirectory.DosPath.Buffer = current_dir; trace in thread.c: 126 params.CurrentDirectory.DosPath.MaximumLength = sizeof(current_dir); trace in thread.c: 127 params.wShowWindow = 1; /* SW_SHOWNORMAL */ trace in thread.c: 128 RtlInitializeBitMap( &tls_bitmap, peb.TlsBitmapBits, sizeof(peb.TlsBitmapBits) * 8 ); trace in rtlbitmap.c: 77 TRACE("(%p,%p,%ld)\n", lpBits,lpBuff,ulSize); trace in debug.c: 229 if (!(__wine_dbg_get_channel_flags( channel ) & (1 << cls))) return -1; trace in debug.c: 54 if (nb_debug_options) trace in debug.c: 61 if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags; trace in debug.c: 62 return default_flags; trace in debug.c: 63 } trace in debug.c: 229 if (!(__wine_dbg_get_channel_flags( channel ) & (1 << cls))) return -1; trace in debug.c: 235 } trace in rtlbitmap.c: 78 lpBits->SizeOfBitMap = ulSize; trace in rtlbitmap.c: 79 lpBits->Buffer = lpBuff; trace in rtlbitmap.c: 80 } trace in thread.c: 129 RtlInitializeBitMap( &tls_expansion_bitmap, peb.TlsExpansionBitmapBits, trace in rtlbitmap.c: 77 TRACE("(%p,%p,%ld)\n", lpBits,lpBuff,ulSize); trace in rtlbitmap.c: 78 lpBits->SizeOfBitMap = ulSize; trace in rtlbitmap.c: 79 lpBits->Buffer = lpBuff; trace in rtlbitmap.c: 80 } trace in thread.c: 131 InitializeListHead( &ldr.InLoadOrderModuleList ); trace in thread.c: 132 InitializeListHead( &ldr.InMemoryOrderModuleList ); trace in thread.c: 133 InitializeListHead( &ldr.InInitializationOrderModuleList ); trace in thread.c: 134 InitializeListHead( &tls_links ); trace in thread.c: 136 sigstack_total_size = get_signal_stack_total_size(); trace in signal_AIX.c: 630 size_t get_signal_stack_total_size(void) trace in signal_AIX.c: 632 assert( sizeof(TEB) <= getpagesize() ); trace in signal_AIX.c: 633 return getpagesize(); /* this is just for the TEB, we don't need a signal stack */ trace in signal_AIX.c: 634 } trace in thread.c: 137 thread_info.teb_size = sigstack_total_size; trace in thread.c: 138 VIRTUAL_alloc_teb( &addr, thread_info.teb_size, TRUE ); trace in virtual.c: 1136 BYTE vprot = VPROT_READ | VPROT_WRITE | VPROT_COMMITTED; trace in virtual.c: 1138 if (first) virtual_init(); trace in virtual.c: 1112 static inline void virtual_init(void) trace in virtual.c: 1115 page_size = getpagesize(); trace in virtual.c: 1116 page_mask = page_size - 1; trace in virtual.c: 1118 assert( !(page_size & page_mask) ); trace in virtual.c: 1119 page_shift = 0; trace in virtual.c: 1120 while ((1 << page_shift) != page_size) page_shift++; trace in virtual.c: 1122 } trace in virtual.c: 1140 *ret = NULL; trace in virtual.c: 1141 size = ROUND_SIZE( 0, size ); trace in virtual.c: 1142 align_size = page_size; trace in virtual.c: 1143 while (align_size < size) align_size *= 2; trace in virtual.c: 1147 if ((ptr = wine_anon_mmap( NULL, 2 * align_size, VIRTUAL_GetUnixProt(vprot), 0 )) == (void *)-1) trace in virtual.c: 433 int prot = 0; trace in virtual.c: 434 if ((vprot & VPROT_COMMITTED) && !(vprot & VPROT_GUARD)) trace in virtual.c: 436 if (vprot & VPROT_READ) prot |= PROT_READ; trace in virtual.c: 437 if (vprot & VPROT_WRITE) prot |= PROT_WRITE; trace in virtual.c: 438 if (vprot & VPROT_WRITECOPY) prot |= PROT_WRITE; trace in virtual.c: 439 if (vprot & VPROT_EXEC) prot |= PROT_EXEC; trace in virtual.c: 441 return prot; trace in virtual.c: 442 } trace in mmap.c: 176 flags |= MAP_ANON; trace in mmap.c: 189 flags &= ~MAP_SHARED; trace in mmap.c: 194 flags |= MAP_PRIVATE; trace in mmap.c: 197 if (!(flags & MAP_FIXED)) trace in mmap.c: 212 return mmap( start, size, prot, flags, fdzero, 0 ); trace in mmap.c: 216 } trace in virtual.c: 1152 if (!is_beyond_limit( ptr, 2 * align_size, user_space_limit )) trace in virtual.c: 325 return (limit && (addr >= limit || (char *)addr + size > (char *)limit)); trace in virtual.c: 326 } trace in virtual.c: 1154 ptr = unmap_extra_space( ptr, 2 * align_size, align_size, align_size - 1 ); trace in virtual.c: 559 if ((ULONG_PTR)ptr & mask) trace in virtual.c: 566 if (total_size > wanted_size) trace in virtual.c: 567 munmap( (char *)ptr + wanted_size, total_size - wanted_size ); trace in virtual.c: 568 return ptr; trace in virtual.c: 569 } trace in virtual.c: 1155 break; trace in virtual.c: 1161 if (!first) RtlEnterCriticalSection( &csVirtual ); trace in virtual.c: 1163 status = create_view( &view, ptr, size, vprot ); trace in virtual.c: 368 assert( !((UINT_PTR)base & page_mask) ); trace in virtual.c: 369 assert( !(size & page_mask) ); trace in virtual.c: 373 if (!(view = malloc( sizeof(*view) + (size >> page_shift) - 1 ))) return STATUS_NO_MEMORY; trace in virtual.c: 375 view->base = base; trace in virtual.c: 376 view->size = size; trace in virtual.c: 377 view->flags = 0; trace in virtual.c: 378 view->mapping = 0; trace in virtual.c: 379 view->protect = vprot; trace in virtual.c: 380 memset( view->prot, vprot, size >> page_shift ); trace in virtual.c: 384 LIST_FOR_EACH( ptr, &views_list ) trace in virtual.c: 389 list_add_before( ptr, &view->entry ); trace in list.h: 77 to_add->next = elem; trace in list.h: 78 to_add->prev = elem->prev; trace in list.h: 79 elem->prev->next = to_add; trace in list.h: 80 elem->prev = to_add; trace in list.h: 81 } trace in virtual.c: 395 if ((ptr = list_prev( &views_list, &view->entry )) != NULL) trace in list.h: 113 struct list *ret = elem->prev; trace in list.h: 114 if (elem->prev == list) ret = NULL; trace in list.h: 115 return ret; trace in list.h: 116 } trace in virtual.c: 407 if ((ptr = list_next( &views_list, &view->entry )) != NULL) trace in list.h: 105 struct list *ret = elem->next; trace in list.h: 106 if (elem->next == list) ret = NULL; trace in list.h: 107 return ret; trace in list.h: 108 } trace in virtual.c: 420 *view_ret = view; trace in virtual.c: 421 VIRTUAL_DEBUG_DUMP_VIEW( view ); trace in debug.c: 54 if (nb_debug_options) trace in debug.c: 61 if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags; trace in debug.c: 62 return default_flags; trace in debug.c: 63 } trace in virtual.c: 422 return STATUS_SUCCESS; trace in virtual.c: 1164 if (status == STATUS_SUCCESS) trace in virtual.c: 1166 view->flags |= VFLAG_VALLOC; trace in virtual.c: 1167 *ret = ptr; trace in virtual.c: 1168 } trace in virtual.c: 1171 if (!first) RtlLeaveCriticalSection( &csVirtual ); trace in virtual.c: 1173 return status; trace in thread.c: 139 teb = addr; trace in thread.c: 140 init_teb( teb ); trace in thread.c: 70 struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)teb->SystemReserved2; trace in thread.c: 72 teb->Tib.ExceptionList = (void *)~0UL; trace in thread.c: 73 teb->Tib.StackBase = (void *)~0UL; trace in thread.c: 74 teb->Tib.Self = &teb->Tib; trace in thread.c: 75 teb->Peb = &peb; trace in thread.c: 76 teb->StaticUnicodeString.Buffer = teb->StaticUnicodeBuffer; trace in thread.c: 77 teb->StaticUnicodeString.MaximumLength = sizeof(teb->StaticUnicodeBuffer); trace in thread.c: 79 if (!(thread_data->teb_sel = wine_ldt_alloc_fs())) return STATUS_TOO_MANY_THREADS; trace in library.h: 87 static inline unsigned short wine_ldt_alloc_fs(void) { return 0x0b; /* pseudo GDT selector */ } trace in thread.c: 80 thread_data->request_fd = -1; trace in thread.c: 81 thread_data->reply_fd = -1; trace in thread.c: 82 thread_data->wait_fd[0] = -1; trace in thread.c: 83 thread_data->wait_fd[1] = -1; trace in thread.c: 85 return STATUS_SUCCESS; trace in thread.c: 86 } trace in thread.c: 141 thread_data = (struct ntdll_thread_data *)teb->SystemReserved2; trace in thread.c: 142 thread_data->debug_info = &debug_info; trace in thread.c: 143 InsertHeadList( &tls_links, &teb->TlsLinks ); trace in thread.c: 145 thread_info.stack_base = NULL; trace in thread.c: 146 thread_info.stack_size = 0; trace in thread.c: 147 thread_info.teb_base = teb; trace in thread.c: 148 thread_info.teb_sel = thread_data->teb_sel; trace in thread.c: 149 wine_pthread_get_functions( &pthread_functions, sizeof(pthread_functions) ); trace in port.c: 38 memcpy( functions, &pthread_functions, min( size, sizeof(pthread_functions) )); trace in port.c: 39 } trace in thread.c: 150 pthread_functions.init_current_teb( &thread_info ); trace in pthread.C: 129 if (!init_done) /* first thread */ trace in pthread.C: 130 pthread_key_create( &teb_key, NULL ); trace in pthread.C: 131 pthread_setspecific( teb_key, info->teb_base ); trace in pthread.C: 135 info->pid = getpid(); trace in pthread.C: 136 info->tid = pthread_self(); trace in pthread.C: 137 } trace in thread.c: 151 pthread_functions.init_thread( &thread_info ); trace in pthread.C: 75 if (init_done) trace in pthread.C: 92 } trace in thread.c: 153 debug_info.str_pos = debug_info.strings; trace in thread.c: 154 debug_info.out_pos = debug_info.output; trace in thread.c: 155 debug_init(); trace in debugtools.c: 201 void debug_init(void) trace in debugtools.c: 203 __wine_dbg_set_functions( &funcs, &default_funcs, sizeof(funcs) ); trace in debug.c: 402 if (old_funcs) memcpy( old_funcs, &funcs, min(sizeof(funcs),size) ); trace in debug.c: 403 if (new_funcs) memcpy( &funcs, new_funcs, min(sizeof(funcs),size) ); trace in debug.c: 404 } trace in debugtools.c: 204 } trace in thread.c: 158 server_init_process(); trace in server.c: 851 void server_init_process(void) trace in server.c: 856 const char *server_dir = wine_get_server_dir(); trace in config.c: 243 const char *wine_get_server_dir(void) trace in config.c: 245 if (!server_dir) trace in config.c: 247 if (!config_dir) init_paths(); trace in config.c: 131 static void init_paths(void) trace in config.c: 135 const char *home = getenv( "HOME" ); trace in config.c: 136 const char *user = NULL; trace in config.c: 137 const char *prefix = getenv( "WINEPREFIX" ); trace in config.c: 141 struct passwd *pwd = getpwuid( getuid() ); trace in config.c: 143 if (pwd) trace in config.c: 145 user = pwd->pw_name; trace in config.c: 146 if (!home) home = pwd->pw_dir; trace in config.c: 148 if (!user) trace in config.c: 157 user_name = xstrdup( user ); trace in config.c: 91 size_t len = strlen(str) + 1; trace in config.c: 92 char *res = xmalloc( len ); trace in config.c: 83 if (!size) size = 1; trace in config.c: 84 if (!(res = malloc( size ))) fatal_error( "virtual memory exhausted\n"); trace in config.c: 85 return res; trace in config.c: 86 } trace in config.c: 93 memcpy( res, str, len ); trace in config.c: 94 return res; trace in config.c: 95 } trace in config.c: 161 if (prefix) trace in config.c: 177 if (!home) fatal_error( "could not determine your home directory\n" ); trace in config.c: 178 if (home[0] != '/') fatal_error( "your home directory %s is not an absolute path\n", home ); trace in config.c: 179 config_dir = xmalloc( strlen(home) + sizeof(server_config_dir) ); trace in config.c: 83 if (!size) size = 1; trace in config.c: 84 if (!(res = malloc( size ))) fatal_error( "virtual memory exhausted\n"); trace in config.c: 85 return res; trace in config.c: 86 } trace in config.c: 180 strcpy( config_dir, home ); trace in config.c: 181 remove_trailing_slashes( config_dir ); trace in config.c: 100 int len = strlen( path ); trace in config.c: 101 while (len > 1 && path[len-1] == '/') path[--len] = 0; trace in config.c: 102 } trace in config.c: 182 strcat( config_dir, server_config_dir ); trace in config.c: 183 if (stat( config_dir, &st ) == -1) trace in config.c: 189 if (!S_ISDIR(st.st_mode)) fatal_error( "%s is not a directory\n", config_dir ); trace in config.c: 191 init_server_dir( st.st_dev, st.st_ino ); trace in config.c: 109 const unsigned int uid = getuid(); trace in config.c: 114 server_dir = xmalloc( sizeof(server_root_prefix) + 32 + sizeof(server_dir_prefix) + trace in config.c: 83 if (!size) size = 1; trace in config.c: 84 if (!(res = malloc( size ))) fatal_error( "virtual memory exhausted\n"); trace in config.c: 85 return res; trace in config.c: 86 } trace in config.c: 116 sprintf( server_dir, "%s%u%s", server_root_prefix, uid, server_dir_prefix ); trace in config.c: 117 p = server_dir + strlen(server_dir); trace in config.c: 119 if (sizeof(dev) > sizeof(unsigned long) && dev > ~0UL) trace in config.c: 122 p += sprintf( p, "%lx-", (unsigned long)dev );trace in config.c: 124 if (sizeof(ino) > sizeof(unsigned long) && ino > ~0UL) trace in config.c: 127 sprintf( p, "%lx", (unsigned long)ino ); trace in config.c: 128 } trace in config.c: 192 } trace in config.c: 260 return server_dir; trace in config.c: 261 } trace in server.c: 858 if (!server_dir) /* this means the config dir doesn't exist */ trace in server.c: 865 for (size = 512; ; size *= 2) trace in server.c: 867 if (!(oldcwd = malloc( size ))) break; trace in server.c: 868 if (getcwd( oldcwd, size )) break; trace in server.c: 876 fd_socket = server_connect( oldcwd, server_dir ); trace in server.c: 682 if (chdir( serverdir ) == -1) trace in server.c: 690 if (stat( ".", &st ) == -1) fatal_perror( "stat %s", serverdir ); trace in server.c: 691 if (st.st_uid != getuid()) fatal_error( "'%s' is not owned by you\n", serverdir ); trace in server.c: 692 if (st.st_mode & 077) fatal_error( "'%s' must not be accessible by other users\n", serverdir ); trace in server.c: 694 for (retry = 0; retry < 6; retry++) trace in server.c: 697 if (retry) trace in server.c: 703 else if (lstat( SOCKETNAME, &st ) == -1) /* check for an already existing socket */ trace in server.c: 711 if (!S_ISSOCK(st.st_mode) && !S_ISFIFO(st.st_mode)) trace in server.c: 713 if (st.st_uid != getuid()) trace in server.c: 717 addr.sun_family = AF_UNIX; trace in server.c: 718 strcpy( addr.sun_path, SOCKETNAME ); trace in server.c: 719 slen = sizeof(addr) - sizeof(addr.sun_path) + strlen(addr.sun_path) + 1; trace in server.c: 721 addr.sun_len = slen; trace in server.c: 723 if ((s = socket( AF_UNIX, SOCK_STREAM, 0 )) == -1) fatal_perror( "socket" ); trace in server.c: 724 if (connect( s, (struct sockaddr *)&addr, slen ) != -1) trace in server.c: 726 fcntl( s, F_SETFD, 1 ); /* set close on exec flag */ trace in server.c: 727 return s; trace in server.c: 879 if (oldcwd) trace in server.c: 881 chdir( oldcwd ); trace in server.c: 882 free( oldcwd ); trace in server.c: 886 sigemptyset( &block_set ); trace in server.c: 887 sigaddset( &block_set, SIGALRM ); trace in server.c: 888 sigaddset( &block_set, SIGIO ); trace in server.c: 889 sigaddset( &block_set, SIGINT ); trace in server.c: 890 sigaddset( &block_set, SIGHUP ); trace in server.c: 891 sigaddset( &block_set, SIGUSR1 ); trace in server.c: 892 sigaddset( &block_set, SIGUSR2 ); trace in server.c: 893 sigaddset( &block_set, SIGCHLD ); trace in server.c: 896 ntdll_get_thread_data()->request_fd = receive_fd( &dummy_handle ); trace in server.c: 403 cmsg.header.len = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 404 cmsg.header.level = SOL_SOCKET; trace in server.c: 405 cmsg.header.type = SCM_RIGHTS; trace in server.c: 406 cmsg.fd = -1; trace in server.c: 407 msghdr.msg_control = &cmsg; trace in server.c: 408 msghdr.msg_controllen = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 409 msghdr.msg_flags = 0; trace in server.c: 412 msghdr.msg_name = NULL; trace in server.c: 413 msghdr.msg_namelen = 0; trace in server.c: 414 msghdr.msg_iov = &vec; trace in server.c: 415 msghdr.msg_iovlen = 1; trace in server.c: 416 vec.iov_base = (void *)handle; trace in server.c: 417 vec.iov_len = sizeof(*handle); trace in server.c: 421 if ((ret = recvmsg( fd_socket, &msghdr, 0 )) > 0) trace in server.c: 424 fd = cmsg.fd; trace in server.c: 426 if (fd != -1) fcntl( fd, F_SETFD, 1 ); /* set close on exec flag */ trace in server.c: 427 return fd; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 897 } trace in thread.c: 159 info_size = server_init_thread( thread_info.pid, thread_info.tid, NULL ); trace in server.c: 912 sig_act.sa_handler = SIG_IGN; trace in server.c: 913 sig_act.sa_flags = 0; trace in server.c: 914 sigemptyset( &sig_act.sa_mask ); trace in server.c: 917 sigaction( SIGPIPE, &sig_act, NULL ); trace in server.c: 920 sig_act.sa_flags |= SA_NOCLDWAIT; trace in server.c: 922 sigaction( SIGCHLD, &sig_act, NULL ); trace in server.c: 925 if (pipe( reply_pipe ) == -1) server_protocol_perror( "pipe" ); trace in server.c: 926 if (pipe( ntdll_get_thread_data()->wait_fd ) == -1) server_protocol_perror( "pipe" ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 927 wine_server_send_fd( reply_pipe[1] ); trace in server.c: 348 vec.iov_base = (void *)&data; trace in server.c: 349 vec.iov_len = sizeof(data); trace in server.c: 351 msghdr.msg_name = NULL; trace in server.c: 352 msghdr.msg_namelen = 0; trace in server.c: 353 msghdr.msg_iov = &vec; trace in server.c: 354 msghdr.msg_iovlen = 1; trace in server.c: 360 cmsg.header.len = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 361 cmsg.header.level = SOL_SOCKET; trace in server.c: 362 cmsg.header.type = SCM_RIGHTS; trace in server.c: 363 cmsg.fd = fd; trace in server.c: 364 msghdr.msg_control = &cmsg; trace in server.c: 365 msghdr.msg_controllen = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 366 msghdr.msg_flags = 0; trace in server.c: 369 data.tid = GetCurrentThreadId(); trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 370 data.fd = fd; trace in server.c: 374 if ((ret = sendmsg( fd_socket, &msghdr, 0 )) == sizeof(data)) return; trace in server.c: 928 wine_server_send_fd( ntdll_get_thread_data()->wait_fd[1] ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 348 vec.iov_base = (void *)&data; trace in server.c: 349 vec.iov_len = sizeof(data); trace in server.c: 351 msghdr.msg_name = NULL; trace in server.c: 352 msghdr.msg_namelen = 0; trace in server.c: 353 msghdr.msg_iov = &vec; trace in server.c: 354 msghdr.msg_iovlen = 1; trace in server.c: 360 cmsg.header.len = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 361 cmsg.header.level = SOL_SOCKET; trace in server.c: 362 cmsg.header.type = SCM_RIGHTS; trace in server.c: 363 cmsg.fd = fd; trace in server.c: 364 msghdr.msg_control = &cmsg; trace in server.c: 365 msghdr.msg_controllen = sizeof(cmsg.header) + sizeof(fd); trace in server.c: 366 msghdr.msg_flags = 0; trace in server.c: 369 data.tid = GetCurrentThreadId(); trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 370 data.fd = fd; trace in server.c: 374 if ((ret = sendmsg( fd_socket, &msghdr, 0 )) == sizeof(data)) return; trace in server.c: 929 ntdll_get_thread_data()->reply_fd = reply_pipe[0];trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 930 close( reply_pipe[1] ); trace in server.c: 933 fcntl( ntdll_get_thread_data()->reply_fd, F_SETFD, 1 ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 934 fcntl( ntdll_get_thread_data()->wait_fd[0], F_SETFD, 1 ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 935 fcntl( ntdll_get_thread_data()->wait_fd[1], F_SETFD, 1 ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 937 SERVER_START_REQ( init_thread ) trace in server.c: 939 req->unix_pid = unix_pid; trace in server.c: 940 req->unix_tid = unix_tid; trace in server.c: 941 req->teb = NtCurrentTeb(); trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 942 req->peb = NtCurrentTeb()->Peb; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 943 req->entry = entry_point; trace in server.c: 944 req->ldt_copy = &wine_ldt_copy; trace in server.c: 945 req->reply_fd = reply_pipe[1]; trace in server.c: 946 req->wait_fd = ntdll_get_thread_data()->wait_fd[1]; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 947 req->debug_level = (TRACE_ON(server) != 0); trace in debug.c: 54 if (nb_debug_options) trace in debug.c: 61 if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags; trace in debug.c: 62 return default_flags; trace in debug.c: 63 } trace in server.c: 948 ret = wine_server_call( req ); trace in server.c: 316 struct __server_request_info * const req = req_ptr; trace in server.c: 319 sigprocmask( SIG_BLOCK, &block_set, &old_set ); trace in server.c: 320 send_request( req ); trace in server.c: 225 if (!req->u.req.request_header.request_size) trace in server.c: 227 if ((ret = write( ntdll_get_thread_data()->request_fd, &req->u.req, trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 228 sizeof(req->u.req) )) == sizeof(req->u.req)) return; trace in server.c: 321 wait_reply( req ); trace in server.c: 286 read_reply_data( &req->u.reply, sizeof(req->u.reply) ); trace in server.c: 263 if ((ret = read( ntdll_get_thread_data()->reply_fd, buffer, size )) > 0) trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 }
[ PAUSE ]
trace in server.c: 265 if (!(size -= ret)) return; trace in server.c: 287 if (req->u.reply.reply_header.reply_size) trace in server.c: 289 } trace in server.c: 322 sigprocmask( SIG_SETMASK, &old_set, NULL ); trace in server.c: 323 return req->u.reply.reply_header.error; trace in server.c: 324 } trace in server.c: 949 NtCurrentTeb()->ClientId.UniqueProcess = (HANDLE)reply->pid; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 950 NtCurrentTeb()->ClientId.UniqueThread = (HANDLE)reply->tid; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in server.c: 951 info_size = reply->info_size; trace in server.c: 952 version = reply->version; trace in server.c: 953 server_start_time = reply->server_start; trace in server.c: 957 if (ret) server_protocol_error( "init_thread failed with status %x\n", ret ); trace in server.c: 958 if (version != SERVER_PROTOCOL_VERSION) trace in server.c: 965 return info_size; trace in thread.c: 162 if (!(peb.ProcessHeap = RtlCreateHeap( HEAP_GROWABLE, NULL, 0, 0, NULL, NULL ))) trace in heap.c: 1060 if (!totalSize) trace in heap.c: 1062 totalSize = HEAP_DEF_SIZE; trace in heap.c: 1063 flags |= HEAP_GROWABLE; trace in heap.c: 1066 if (!(subheap = HEAP_CreateSubHeap( NULL, addr, flags, commitSize, totalSize ))) return 0; trace in heap.c: 665 LPVOID address = base; trace in heap.c: 668 totalSize = (totalSize + 0xffff) & 0xffff0000; trace in heap.c: 669 commitSize = (commitSize + 0xffff) & 0xffff0000; trace in heap.c: 670 if (!commitSize) commitSize = 0x10000; trace in heap.c: 671 if (totalSize < commitSize) totalSize = commitSize; trace in heap.c: 673 if (!address) trace in heap.c: 676 if (NtAllocateVirtualMemory( NtCurrentProcess(), &address, 0, &totalSize, trace in virtual.c: 1245 SIZE_T size = *size_ptr; trace in virtual.c: 1246 NTSTATUS status = STATUS_SUCCESS; trace in virtual.c: 1249 TRACE("%p %p %08lx %lx %08lx\n", process, *ret, size, type, protect ); trace in virtual.c: 1251 if (!size) return STATUS_INVALID_PARAMETER; trace in virtual.c: 1253 if (!is_current_process( process )) trace in virtual.c: 1095 BOOL ret = FALSE; trace in virtual.c: 1097 if (handle == NtCurrentProcess()) return TRUE; trace in virtual.c: 1261 if (size > 0x7fc00000) return STATUS_WORKING_SET_LIMIT_RANGE; /* 2Gb - 4Mb */ trace in virtual.c: 1263 if (*ret) trace in virtual.c: 1279 base = NULL; trace in virtual.c: 1280 size = (size + page_mask) & ~page_mask; trace in virtual.c: 1283 if (type & MEM_TOP_DOWN) { trace in virtual.c: 1289 if (zero_bits) trace in virtual.c: 1294 if (!(type & MEM_SYSTEM)) trace in virtual.c: 1296 if (!(type & (MEM_COMMIT | MEM_RESERVE)) || (type & ~(MEM_COMMIT | MEM_RESERVE))) trace in virtual.c: 1302 vprot = VIRTUAL_GetProt( protect ); trace in virtual.c: 483 switch(protect & 0xff) trace in virtual.c: 489 vprot = VPROT_READ | VPROT_WRITE; trace in virtual.c: 490 break; trace in virtual.c: 519 if (protect & PAGE_GUARD) vprot |= VPROT_GUARD; trace in virtual.c: 520 if (protect & PAGE_NOCACHE) vprot |= VPROT_NOCACHE; trace in virtual.c: 521 return vprot; trace in virtual.c: 522 } trace in virtual.c: 1303 if (type & MEM_COMMIT) vprot |= VPROT_COMMITTED; trace in virtual.c: 1307 RtlEnterCriticalSection( &csVirtual ); trace in critsection.c: 395 if (crit->SpinCount) trace in critsection.c: 411 if (interlocked_inc( &crit->LockCount )) trace in critsection.c: 40 return interlocked_xchg_add( (int *)dest, 1 ) + 1; trace in critsection.c: 41 } trace in critsection.c: 413 if (crit->OwningThread == (HANDLE)GetCurrentThreadId()) trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in critsection.c: 420 RtlpWaitForCriticalSection( crit ); trace in critsection.c: 302 NTSTATUS status = wait_semaphore( crit, 5 ); trace in critsection.c: 123 if (use_futexes() && crit->DebugInfo) /* debug info is cleared by MakeCriticalSectionGlobal */ trace in critsection.c: 95 static inline int use_futexes(void) { return 0; }trace in critsection.c: 141 HANDLE sem = get_semaphore( crit ); trace in critsection.c: 104 HANDLE ret = crit->LockSemaphore; trace in critsection.c: 105 if (!ret) trace in critsection.c: 108 if (NtCreateSemaphore( &sem, SEMAPHORE_ALL_ACCESS, NULL, 0, 1 )) return 0; trace in sync.c: 75 DWORD len = attr && attr->ObjectName ? attr->ObjectName->Length : 0; trace in sync.c: 78 if (MaximumCount <= 0 || InitialCount < 0 || InitialCount > MaximumCount) trace in sync.c: 80 if (len >= MAX_PATH * sizeof(WCHAR)) return STATUS_NAME_TOO_LONG; trace in sync.c: 82 SERVER_START_REQ( create_semaphore ) trace in sync.c: 84 req->access = access; trace in sync.c: 85 req->attributes = (attr) ? attr->Attributes : 0;trace in sync.c: 86 req->initial = InitialCount; trace in sync.c: 87 req->max = MaximumCount; trace in sync.c: 88 if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len ); trace in sync.c: 89 ret = wine_server_call( req ); trace in server.c: 316 struct __server_request_info * const req = req_ptr; trace in server.c: 319 sigprocmask( SIG_BLOCK, &block_set, &old_set ); trace in server.c: 320 send_request( req ); trace in server.c: 225 if (!req->u.req.request_header.request_size) trace in server.c: 227 if ((ret = write( ntdll_get_thread_data()->request_fd, &req->u.req, trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 228 sizeof(req->u.req) )) == sizeof(req->u.req)) return; trace in server.c: 321 wait_reply( req ); trace in server.c: 286 read_reply_data( &req->u.reply, sizeof(req->u.reply) ); trace in server.c: 263 if ((ret = read( ntdll_get_thread_data()->reply_fd, buffer, size )) > 0) trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 265 if (!(size -= ret)) return; trace in server.c: 287 if (req->u.reply.reply_header.reply_size) trace in server.c: 289 } trace in server.c: 322 sigprocmask( SIG_SETMASK, &old_set, NULL ); trace in server.c: 323 return req->u.reply.reply_header.error; trace in server.c: 324 } trace in sync.c: 90 *SemaphoreHandle = reply->handle; trace in sync.c: 93 return ret; trace in critsection.c: 109 if (!(ret = (HANDLE)interlocked_cmpxchg_ptr( (PVOID *)&crit->LockSemaphore, trace in critsection.c: 111 ret = sem; trace in critsection.c: 115 return ret; trace in critsection.c: 116 } trace in critsection.c: 144 time.QuadPart = timeout * (LONGLONG)-10000000; trace in critsection.c: 145 return NtWaitForSingleObject( sem, FALSE, &time ); trace in sync.c: 759 return NtWaitForMultipleObjects( 1, &handle, FALSE, alertable, timeout ); trace in sync.c: 744 UINT flags = SELECT_INTERRUPTIBLE; trace in sync.c: 746 if (!count || count > MAXIMUM_WAIT_OBJECTS) return STATUS_INVALID_PARAMETER_1; trace in sync.c: 748 if (wait_all) flags |= SELECT_ALL; trace in sync.c: 749 if (alertable) flags |= SELECT_ALERTABLE; trace in sync.c: 750 return NTDLL_wait_for_multiple_objects( count, handles, flags, timeout, 0 ); trace in sync.c: 706 if (timeout) flags |= SELECT_TIMEOUT; trace in sync.c: 709 SERVER_START_REQ( select ) trace in sync.c: 711 req->flags = flags; trace in sync.c: 712 req->cookie = &cookie; trace in sync.c: 713 req->signal = signal_object; trace in sync.c: 714 NTDLL_get_server_timeout( &req->timeout, timeout ); trace in time.c: 440 if (!timeout) /* infinite timeout */ trace in time.c: 444 else if (timeout->QuadPart <= 0) /* relative timeout */ trace in time.c: 448 if (-timeout->QuadPart > (LONGLONG)INT_MAX * TICKSPERSEC) trace in time.c: 452 ULONG sec = RtlEnlargedUnsignedDivide( -timeout->QuadPart, TICKSPERSEC, &remainder ); trace in large_int.c: 267 UINT ret = a / b; trace in large_int.c: 268 if (remptr) *remptr = a % b; trace in large_int.c: 269 return ret; trace in large_int.c: 271 } trace in time.c: 453 gettimeofday( &tv, 0 ); trace in time.c: 454 when->sec = tv.tv_sec + sec; trace in time.c: 455 if ((when->usec = tv.tv_usec + (remainder / 10)) >= 1000000) trace in time.c: 460 if (when->sec < tv.tv_sec) /* overflow */ trace in time.c: 463 } trace in time.c: 477 } trace in sync.c: 715 wine_server_add_data( req, handles, count * sizeof(HANDLE) ); trace in server.h: 75 struct __server_request_info * const req = req_ptr; trace in server.h: 76 if (size) trace in server.h: 78 req->data[req->data_count].ptr = ptr; trace in server.h: 79 req->data[req->data_count++].size = size; trace in server.h: 80 req->u.req.request_header.request_size += size; trace in server.h: 82 } trace in sync.c: 716 ret = wine_server_call( req ); trace in server.c: 316 struct __server_request_info * const req = req_ptr; trace in server.c: 319 sigprocmask( SIG_BLOCK, &block_set, &old_set ); trace in server.c: 320 send_request( req ); trace in server.c: 225 if (!req->u.req.request_header.request_size) trace in server.c: 235 vec[0].iov_base = (void *)&req->u.req; trace in server.c: 236 vec[0].iov_len = sizeof(req->u.req); trace in server.c: 237 for (i = 0; i < req->data_count; i++) trace in server.c: 239 vec[i+1].iov_base = (void *)req->data[i].ptr; trace in server.c: 240 vec[i+1].iov_len = req->data[i].size; trace in server.c: 237 for (i = 0; i < req->data_count; i++) trace in server.c: 242 if ((ret = writev( ntdll_get_thread_data()->request_fd, vec, i+1 )) == trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 243 req->u.req.request_header.request_size + sizeof(req->u.req)) return; trace in server.c: 321 wait_reply( req ); trace in server.c: 286 read_reply_data( &req->u.reply, sizeof(req->u.reply) ); trace in server.c: 263 if ((ret = read( ntdll_get_thread_data()->reply_fd, buffer, size )) > 0) trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 265 if (!(size -= ret)) return; trace in server.c: 287 if (req->u.reply.reply_header.reply_size) trace in server.c: 289 } trace in server.c: 322 sigprocmask( SIG_SETMASK, &old_set, NULL ); trace in server.c: 323 return req->u.reply.reply_header.error; trace in server.c: 324 } trace in sync.c: 719 if (ret == STATUS_PENDING) ret = wait_reply( &cookie ); trace in sync.c: 618 ret = read( ntdll_get_thread_data()->wait_fd[0], &reply, sizeof(reply) ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in sync.c: 619 if (ret == sizeof(reply)) trace in sync.c: 621 if (!reply.cookie) break; /* thread got killed */ trace in sync.c: 622 if (reply.cookie == cookie) return reply.signaled; trace in sync.c: 720 if (ret != STATUS_USER_APC) break; trace in sync.c: 729 if (ret == WAIT_TIMEOUT) NtYieldExecution(); trace in sync.c: 783 sched_yield(); trace in sync.c: 784 return STATUS_SUCCESS; trace in sync.c: 788 } trace in sync.c: 731 return ret; trace in sync.c: 751 } trace in sync.c: 760 } trace in critsection.c: 304 if ( status == STATUS_TIMEOUT ) trace in critsection.c: 306 const char *name = NULL; trace in critsection.c: 307 if (crit->DebugInfo) name = (char *)crit->DebugInfo->Spare[0]; trace in critsection.c: 308 if (!name) name = "?"; trace in critsection.c: 309 ERR( "section %p %s wait timed out in thread %04lx, blocked by %04lx, retrying (60 sec)\n", trace in debug.c: 229 if (!(__wine_dbg_get_channel_flags( channel ) & (1 << cls))) return -1; trace in debug.c: 54 if (nb_debug_options) trace in debug.c: 61 if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags; trace in debug.c: 62 return default_flags; trace in debug.c: 63 } trace in debug.c: 231 va_start(valist, format); trace in debug.c: 232 ret = funcs.dbg_vlog( cls, channel, func, format, valist ); trace in debugtools.c: 171 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 172 int ret = 0; trace in debugtools.c: 175 if (info->out_pos == info->output || info->out_pos[-1] == '\n') trace in debugtools.c: 177 if (TRACE_ON(tid)) trace in debug.c: 54 if (nb_debug_options) trace in debug.c: 61 if (channel->flags & (1 << __WINE_DBCL_INIT)) channel->flags = default_flags; trace in debug.c: 62 return default_flags; trace in debug.c: 63 } trace in debugtools.c: 179 if (cls < sizeof(classes)/sizeof(classes[0])) trace in debugtools.c: 180 ret += wine_dbg_printf( "%s:%s:%s ", classes[cls], channel->name, function ); trace in debug.c: 198 va_start(valist, format); trace in debug.c: 199 ret = funcs.dbg_vprintf( format, valist ); trace in debugtools.c: 132 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 135 int ret = vsnprintf( info->out_pos, sizeof(info->output) - (info->out_pos - info->output), trace in debugtools.c: 142 if ((ret == -1) || (ret >= sizeof(info->output) - (info->out_pos - info->output))) trace in debugtools.c: 150 p = strrchr( info->out_pos, '\n' ); trace in debugtools.c: 151 if (!p) info->out_pos += ret; trace in debugtools.c: 161 return ret; trace in debugtools.c: 162 } trace in debug.c: 200 va_end(valist); trace in debug.c: 201 return ret; trace in debug.c: 202 } trace in debugtools.c: 182 if (format) trace in debugtools.c: 183 ret += NTDLL_dbg_vprintf( format, args ); trace in debugtools.c: 132 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 135 int ret = vsnprintf( info->out_pos, sizeof(info->output) - (info->out_pos - info->output), trace in debugtools.c: 142 if ((ret == -1) || (ret >= sizeof(info->output) - (info->out_pos - info->output))) trace in debugtools.c: 150 p = strrchr( info->out_pos, '\n' ); trace in debugtools.c: 151 if (!p) info->out_pos += ret; trace in debugtools.c: 161 return ret; trace in debugtools.c: 162 } trace in debugtools.c: 184 return ret; trace in debugtools.c: 185 } trace in debug.c: 233 va_end(valist); trace in debug.c: 234 return ret; trace in debug.c: 235 } trace in debug.h: 254 inline static const char *debugstr_a( const char *s ) { return wine_dbgstr_an( s, -1 ); } trace in debug.c: 391 return funcs.dbgstr_an(s, n); trace in debugtools.c: 87 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 89 char *old_pos = info->str_pos; trace in debugtools.c: 91 __TRY trace in debugtools.c: 95 __EXCEPT(page_fault) trace in exception.h: 165 NT_TIB *teb = (NT_TIB *)NtCurrentTeb(); trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in exception.h: 166 frame->Prev = (void *)teb->ExceptionList; trace in exception.h: 167 teb->ExceptionList = (void *)frame; trace in exception.h: 168 return frame->Prev; trace in exception.h: 170 } trace in debugtools.c: 95 __EXCEPT(page_fault) trace in debugtools.c: 100 __ENDTRY trace in debugtools.c: 91 __TRY trace in debugtools.c: 93 res = default_funcs.dbgstr_an( src, n ); trace in debug.c: 267 if (!((ULONG_PTR)str >> 16)) trace in debug.c: 274 if (n == -1) n = strlen(str); trace in debug.c: 275 if (n < 0) n = 0; trace in debug.c: 276 size = 10 + min( 300, n * 4 ); trace in debug.c: 277 dst = res = funcs.get_temp_buffer( size ); trace in debugtools.c: 66 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 67 char *res = info->str_pos; trace in debugtools.c: 69 if (res + n >= &info->strings[sizeof(info->strings)]) res = info->strings; trace in debugtools.c: 70 info->str_pos = res + n; trace in debugtools.c: 71 return res; trace in debugtools.c: 72 } trace in debug.c: 278 *dst++ = '"'; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 281 unsigned char c = *str++; trace in debug.c: 282 switch (c) trace in debug.c: 290 if (c >= ' ' && c <= 126) trace in debug.c: 291 *dst++ = c; trace in debug.c: 279 while (n-- > 0 && dst <= res + size - 9) trace in debug.c: 301 *dst++ = '"'; trace in debug.c: 302 if (*str) trace in debug.c: 308 *dst++ = 0; trace in debug.c: 309 funcs.release_temp_buffer( res, dst - res ); trace in debugtools.c: 77 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 78 info->str_pos = ptr + size; trace in debugtools.c: 79 } trace in debug.c: 310 return res; trace in debugtools.c: 95 __EXCEPT(page_fault) trace in exception.h: 180 NT_TIB *teb = (NT_TIB *)NtCurrentTeb(); trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in exception.h: 181 teb->ExceptionList = (void *)frame->Prev; trace in exception.h: 182 return frame->Prev; trace in exception.h: 184 } trace in debugtools.c: 95 __EXCEPT(page_fault) trace in debugtools.c: 101 return res; trace in debug.c: 392 } trace in debug.h: 254 inline static const char *debugstr_a( const char *s ) { return wine_dbgstr_an( s, -1 ); } trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in debug.c: 198 va_start(valist, format); trace in debug.c: 199 ret = funcs.dbg_vprintf( format, valist ); trace in debugtools.c: 132 struct debug_info *info = get_info(); trace in debugtools.c: 60 return ntdll_get_thread_data()->debug_info; trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in debugtools.c: 61 } trace in debugtools.c: 135 int ret = vsnprintf( info->out_pos, sizeof(info->output) - (info->out_pos - info->output), trace in debugtools.c: 142 if ((ret == -1) || (ret >= sizeof(info->output) - (info->out_pos - info->output))) trace in debugtools.c: 150 p = strrchr( info->out_pos, '\n' ); trace in debugtools.c: 151 if (!p) info->out_pos += ret; trace in debugtools.c: 154 char *pos = info->output; trace in debugtools.c: 155 p++; trace in debugtools.c: 156 write( 2, pos, p - pos ); err:ntdll:critsection.c 309: section f0dfcb58 "virtual.c: csVirtual" wait timed out in thread 0009, blocked by 0000, retrying (60 sec) trace in debugtools.c: 158 while ((*pos = *p++)) pos++; trace in debugtools.c: 159 info->out_pos = pos; trace in debugtools.c: 161 return ret; trace in debugtools.c: 162 } trace in debug.c: 200 va_end(valist); trace in debug.c: 201 return ret; trace in debug.c: 202 } trace in critsection.c: 311 status = wait_semaphore( crit, 60 ); trace in critsection.c: 123 if (use_futexes() && crit->DebugInfo) /* debug info is cleared by MakeCriticalSectionGlobal */ trace in critsection.c: 95 static inline int use_futexes(void) { return 0; }trace in critsection.c: 141 HANDLE sem = get_semaphore( crit ); trace in critsection.c: 104 HANDLE ret = crit->LockSemaphore; trace in critsection.c: 105 if (!ret) trace in critsection.c: 115 return ret; trace in critsection.c: 116 } trace in critsection.c: 144 time.QuadPart = timeout * (LONGLONG)-10000000; trace in critsection.c: 145 return NtWaitForSingleObject( sem, FALSE, &time ); trace in sync.c: 759 return NtWaitForMultipleObjects( 1, &handle, FALSE, alertable, timeout ); trace in sync.c: 744 UINT flags = SELECT_INTERRUPTIBLE; trace in sync.c: 746 if (!count || count > MAXIMUM_WAIT_OBJECTS) return STATUS_INVALID_PARAMETER_1; trace in sync.c: 748 if (wait_all) flags |= SELECT_ALL; trace in sync.c: 749 if (alertable) flags |= SELECT_ALERTABLE; trace in sync.c: 750 return NTDLL_wait_for_multiple_objects( count, handles, flags, timeout, 0 ); trace in sync.c: 706 if (timeout) flags |= SELECT_TIMEOUT; trace in sync.c: 709 SERVER_START_REQ( select ) trace in sync.c: 711 req->flags = flags; trace in sync.c: 712 req->cookie = &cookie; trace in sync.c: 713 req->signal = signal_object; trace in sync.c: 714 NTDLL_get_server_timeout( &req->timeout, timeout ); trace in time.c: 440 if (!timeout) /* infinite timeout */ trace in time.c: 444 else if (timeout->QuadPart <= 0) /* relative timeout */ trace in time.c: 448 if (-timeout->QuadPart > (LONGLONG)INT_MAX * TICKSPERSEC) trace in time.c: 452 ULONG sec = RtlEnlargedUnsignedDivide( -timeout->QuadPart, TICKSPERSEC, &remainder ); trace in large_int.c: 267 UINT ret = a / b; trace in large_int.c: 268 if (remptr) *remptr = a % b; trace in large_int.c: 269 return ret; trace in large_int.c: 271 } trace in time.c: 453 gettimeofday( &tv, 0 ); trace in time.c: 454 when->sec = tv.tv_sec + sec; trace in time.c: 455 if ((when->usec = tv.tv_usec + (remainder / 10)) >= 1000000) trace in time.c: 460 if (when->sec < tv.tv_sec) /* overflow */ trace in time.c: 463 } trace in time.c: 477 } trace in sync.c: 715 wine_server_add_data( req, handles, count * sizeof(HANDLE) ); trace in server.h: 75 struct __server_request_info * const req = req_ptr; trace in server.h: 76 if (size) trace in server.h: 78 req->data[req->data_count].ptr = ptr; trace in server.h: 79 req->data[req->data_count++].size = size; trace in server.h: 80 req->u.req.request_header.request_size += size; trace in server.h: 82 } trace in sync.c: 716 ret = wine_server_call( req ); trace in server.c: 316 struct __server_request_info * const req = req_ptr; trace in server.c: 319 sigprocmask( SIG_BLOCK, &block_set, &old_set ); trace in server.c: 320 send_request( req ); trace in server.c: 225 if (!req->u.req.request_header.request_size) trace in server.c: 235 vec[0].iov_base = (void *)&req->u.req; trace in server.c: 236 vec[0].iov_len = sizeof(req->u.req); trace in server.c: 237 for (i = 0; i < req->data_count; i++) trace in server.c: 239 vec[i+1].iov_base = (void *)req->data[i].ptr; trace in server.c: 240 vec[i+1].iov_len = req->data[i].size; trace in server.c: 237 for (i = 0; i < req->data_count; i++) trace in server.c: 242 if ((ret = writev( ntdll_get_thread_data()->request_fd, vec, i+1 )) == trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 243 req->u.req.request_header.request_size + sizeof(req->u.req)) return; trace in server.c: 321 wait_reply( req ); trace in server.c: 286 read_reply_data( &req->u.reply, sizeof(req->u.reply) ); trace in server.c: 263 if ((ret = read( ntdll_get_thread_data()->reply_fd, buffer, size )) > 0) trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 } trace in server.c: 265 if (!(size -= ret)) return; trace in server.c: 287 if (req->u.reply.reply_header.reply_size) trace in server.c: 289 } trace in server.c: 322 sigprocmask( SIG_SETMASK, &old_set, NULL ); trace in server.c: 323 return req->u.reply.reply_header.error; trace in server.c: 324 } trace in sync.c: 719 if (ret == STATUS_PENDING) ret = wait_reply( &cookie ); trace in sync.c: 618 ret = read( ntdll_get_thread_data()->wait_fd[0], &reply, sizeof(reply) ); trace in ntdll_misc.h: 127 return (struct ntdll_thread_data *)NtCurrentTeb()->SystemReserved2; trace in thread.c: 1022 return pthread_functions.get_current_teb(); trace in pthread.C: 150 return pthread_getspecific( teb_key ); trace in pthread.C: 152 } trace in thread.c: 1023 } trace in ntdll_misc.h: 128 }
On Fri, Dec 30, 2005 at 05:51:54PM +0000, Tomas Carnecky wrote:
Huw D M Davies wrote:
Huw Davies <huw@codeweavers.com> Add support for rendering on bitmaps
This patch breaks World of Warcraft, reverting this patch makes WoW work again. This is the error:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 142 (GLX) Minor opcode of failed request: 13 (X_GLXCreateGLXPixmap) Serial number of failed request: 410 Current serial number in output stream: 411
Could you send me a +opengl log of this?
Thanks, Huw.
Huw D M Davies wrote:
On Fri, Dec 30, 2005 at 05:51:54PM +0000, Tomas Carnecky wrote:
Huw D M Davies wrote:
Huw Davies <huw@codeweavers.com> Add support for rendering on bitmaps
This patch breaks World of Warcraft, reverting this patch makes WoW work again. This is the error:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 142 (GLX) Minor opcode of failed request: 13 (X_GLXCreateGLXPixmap) Serial number of failed request: 410 Current serial number in output stream: 411
Could you send me a +opengl log of this?
log is in the attachment. the crash occurs when I enter the worl, not when the game starts up.
You may want to use 'bzcat log.bz1 | tail -n 100' or 'head -n 100' because the log is huge
tom
Huw D M Davies wrote:
On Fri, Dec 30, 2005 at 05:51:54PM +0000, Tomas Carnecky wrote:
Huw D M Davies wrote:
Huw Davies <huw@codeweavers.com> Add support for rendering on bitmaps
This patch breaks World of Warcraft, reverting this patch makes WoW work again. This is the error:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 142 (GLX) Minor opcode of failed request: 13 (X_GLXCreateGLXPixmap) Serial number of failed request: 410 Current serial number in output stream: 411
Could you send me a +opengl log of this?
the crash occurs when I enter the world, not when the game starts up.
Your mail server refuses too big bzip2 attachments, so I've put the log to my webserver: http://dbservice.com/tom/log.bz2
You may want to use 'bzcat log.bz2 | tail -n 100' or 'head -n 100' because the log is huge
tom