[Bug 20230] New: GetThreadTimes() and the Actual and Pseudo Current Thread Handles

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Oct 1 08:18:20 CDT 2009


http://bugs.winehq.org/show_bug.cgi?id=20230

           Summary: GetThreadTimes() and the Actual and Pseudo Current
                    Thread Handles
           Product: Wine
           Version: 1.1.30
          Platform: PC
               URL: http://rh-software.com
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ntdll
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: ray at pobox.co.uk


Some time ago I had an issue with SIV being unable to read the thread CPU time
usage when using GetThreadTimes(). I tracked down to the following and then did
a work-a-round.

The "Current Thread" effectively has 2 current thread handles, these are the
actual thread handle and the ~0 pseudo handle as returned by
GetCurrentThread().  When a call is made to GetThreadTimes() this calls
NtQueryInformationThread( ThreadTimes ) which contains the test "if (handle ==
GetCurrentThread())".  As a result of this when GetThreadTimes() is called with
the actual thread handle no data is returned.

\WINE-1.1.30\dlls\ntdll\thread.c(1011): if (handle == GetCurrentThread())

I suspect the code should be changed to allow both the pseudo and actual thread
handles to be used as a minimum, better still would, when possible, be to
implement this function for any thread.

While searching the source I also noticed:

NTSTATUS WINAPI NtSetInformationThread( HANDLE handle, THREADINFOCLASS class,
                                        LPCVOID data, ULONG length )
{
    NTSTATUS status;
    switch(class)
    {
    case ThreadZeroTlsCell:
        if (handle == GetCurrentThread())

And suspect that code would benefit from a similar fix.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list