http://bugs.winehq.org/show_bug.cgi?id=7560
------- Additional Comments From focht@gmx.net 2007-16-03 05:30 ------- Hello,
you can reproduce this with single threaded apps too - just show the "threads" window.
Looking at the fixme you might be out of luck.
--- snip --- dlls/ntdll/thread.c:NtQueryInformationThread( ThreadTimes) ... /* We call times(2) for kernel time or user time */ /* We can only (portably) do this for the current thread */ if (handle == GetCurrentThread()) { struct tms time_buf; long clocks_per_sec = sysconf(_SC_CLK_TCK);
times(&time_buf); kusrt.KernelTime.QuadPart = (ULONGLONG)time_buf.tms_stime * 10000000 / clocks_per_sec; kusrt.UserTime.QuadPart = (ULONGLONG)time_buf.tms_utime * 10000000 / clocks_per_sec; } else { kusrt.KernelTime.QuadPart = 0; kusrt.UserTime.QuadPart = 0; FIXME("Cannot get kerneltime or usertime of other threads\n"); } --- snip ---
times(2) and getrusage(2) wont do any good here for child threads. One might read out /proc table info for individual threads but that query is very costly and the info returned is not accurate at all.
There is some lengthy discussion regarding kernel/user time of thread on the windows side too:
http://blog.kalmbachnet.de/?postid=28 http://groups.google.de/group/microsoft.public.win32.programmer.kernel/brows...
In short: forget these values.
Ollydbg queries the info by calling GetThreadTimes() (which in turn calls NtQueryInformationThread( ThreadTimes)). If the flooding bothers you, replace the FIXME() with WARN() or remove it completely. I assume there wont be a fix soon.
Regards