[Bug 19982] New: SetThreadAffinityMask() seems not to work correctly

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Sep 8 09:55:03 CDT 2009


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

           Summary: SetThreadAffinityMask() seems not to work correctly
           Product: Wine
           Version: 1.1.29
          Platform: PC
               URL: http://rh-software.com/
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: kernel32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: ray at pobox.co.uk


Created an attachment (id=23510)
 --> (http://bugs.winehq.org/attachment.cgi?id=23510)
SIV log shouing pseuso random APICs

When my SIV application (http://rh-software.com/) on under Wine the reported
processor topography is often incorrect.  This is caused by the APIC returned
by the CPUID 1 instruction not being the APIC for the CPU I have set affinity
to.  This makes me believe that SetThreadAffinityMask() is not working
correctly.  This can easily be shown using me SIV utility with the command
line:
SIV -SAVE=[processors]=stdout -nodriver | find "CPU-"
which when run under Wine typically reports:
                    MPS  MCP  HTT          APIC  G  N  Affinity       Speed
Processors  CPU-0   0    3    0    (core)  0003  0  0  0x00000001   3.00GHz
            CPU-1   0    3    0    ...     0003  0  1  0x00000002   3.00GHz
            CPU-2   0    3    0    ...     0003  0  2  0x00000004   3.00GHz
            CPU-3   0    3    0    ...     0003  0  3  0x00000008   3.00GHz
if SetThreadAffinityMask() was woring as expected each CPU would have a
different APIC giving a report similar to
Processors  CPU-0   0    0    0               0000  0  0  0x00000001   3.20GHz
            CPU-1   0    1    0    (core)     0002  0  1  0x00000002   3.20GHz
            CPU-2   0    0    1    (logical)  0001  0  2  0x00000004   3.20GHz
            CPU-3   0    1    1    ...        0003  0  3  0x00000008   3.20GHz
this has been seen on at least 2 different systems.  Further the APIC returned
for a given CPU seems to vary from run-to-run as shown in the siv_apic.txt
attachment.

Looking through the bug reports this could also be what is fundamental cause of
issue http://bugs.winehq.org/show_bug.cgi?id=11674.  If WOW is using
SetThreadAffinityMask() it could happen that all the threads end up running on
the same CPU because of SetThreadAffinityMask() not working as it should.

The -NODRIVER qualifier is needed with SIV 4.00 and earlier and will not be
needed from SIV 4.01 onwards.

-- 
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