https://bugs.winehq.org/show_bug.cgi?id=50322
Bug ID: 50322
Summary: REDEngineErrorReporter.exe Page fault while trying to
print unimplemented function message to console.
Product: Wine
Version: 6.0-rc2
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: hibbsncc1701(a)gmail.com
Distribution: ---
Created attachment 68905
--> https://bugs.winehq.org/attachment.cgi?id=68905
Backtrace of bug.
Crash occurs when attempting to debug print an unimplemented function call when
launching Cyberpunk2077 (GOG version) using dxvk with wine's dxgi.dll.
Triggered by REDEngineErrorReporter.exe and not the game itself.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=45023
Bug ID: 45023
Summary: TestBot Object Relational Mapper issues
Product: Wine-Testbot
Version: unspecified
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: unknown
Assignee: wine-bugs(a)winehq.org
Reporter: fgouget(a)codeweavers.com
Distribution: ---
The TestBot implements its own perl Object Relational Mapper (ORM) to access
the database. It is implemented by the modules in lib/ObjectModel. The are two
main concepts:
* Items
An Item is an object representing a table row. The classes such as Job, Step
and Task all inherit from Item.
* Collections
A collection represents a table and is thus a collection of Items. To allow
for fast access the items are stored in a perl hashtable indexed by their
primary key. A Collection may not contain all of the table's rows. For instance
a Step Collection only contains the Steps of the parent Job object used to
create it. So $Job->Steps is a collection that contains only the $Job steps.
The items in a Collection can be further filtered out by specifying that one
of their property must be in a set of values. For instance
$Jobs->AddFilter("Status", ["queued", "running"]) will cause the $Jobs
collection to only return the queued and running jobs.
Unfortunately this implementation has a number of limitations and design
issues.
1. Care must be taken when creating multiple objects.
my $Job1 = $Jobs->Add();
... Set mandatory fields ...
my $Job2 = $Jobs->Add();
... Set mandatory fields ...
# Here $Job1 != $Job2
$Jobs->Save();
Only $Job2 got saved to the database!
The reason is that a Job's primary key is an auto-increment field. So the Job
Id is set when it is saved to the database. Thus when created in memory that
field is unset and an empty string is used when adding it to the $Jobs items
hashtable. Thus $Job2 overwrites $Jobs->{Items}->{""} and is the only one that
gets saved.
Note that there is no such issue for Steps for instance because their key is
not an auto-increment field and is set as soon as the object is created.
Fortunately the workaround is simple: systematically save an object before
creating the next one but the difference in behavior between $Jobs->Add() and
$Steps->Add() is error prone.
2. Auto-increment values on new Items are not ignored
If an auto-increment field is modified on an object, that value is used when
saving the object to the database.
This means fixing the previous issue is not as simple as setting
$Job->Id(--$Unique): handling of auto-increment fields also needs to be changed
when saving new objects.
3. Items retrieved from Detailref collections are missing fields
'Detailref' properties are used to represent 'one to many' relationships.
They are used for instance to access the Steps that belong to a Job:
my $Step = $Job->Steps->GetItem(1);
Here Steps is a collection that gets created based on the information of the
job's DetailRef property.
However objects gotten in this way don't provide access to all of the
corresponding database fields. In the case of Steps, although the Steps table
has a JobId column, the $Step->JobId property does not exist. This presents
difficulties in a number of cases such as when trying to figure out the name of
the directory containing the Step's files since it is called
"jobs/$JobId/$StepNo" (see Step::GetDir()).
It also means there is no $Step->Job property to get back to the parent Job
object (this would also cause a perl reference loop which would be
troublesome).
The reason for this issue is that when a Collection or Item has a parent object
(called a 'master' object in the TestBot ORM) the parent's foreign key fields
(Step.JobId here) are stored separately in a 'master cols' structure and are
thus not accessible through the normal field methods.
4. "Child" objects can only be accessed from their parent
Any collection referenced through a Detailref property can only be accessed
through the corresponding 'parent' object.
This is the case for the Steps collections. The only way to get a collection of
steps is through $Job->Steps and this only returns the steps that belong to
$Job. So it's not possible to iterate over all the rows in the Steps table.
There is a (somewhat incorrect) workaround for this for the Records table.
This involves having the CreateRecords() method picking one of two
PropertyDescriptors list depending on the presence of a parent object.
However the corresponding Record objects have an extra field compared to the
ones obtained through $RecordGroup->Records: this time the foreign key
identifying the parent object is accessible since it's not not tucked away in
the 'master cols' structure. This is not an issue unless you start mixing both
types of objects, for instance through scope inheritance.
5. The 'master cols' terminology is ambiguous.
It's never clear if a 'master cols' method treats $self as a child of its
parent object, or as the parent to other child objects.
* $Step->GetMasterCols() treats $Step as a child object and returns the key
columns of its $Job master object, that is (JobId).
* Similarly $Step->MasterKeyChanged() means the parent object's key changed, so
here that the value of $JobId changed (which happens on new objects due to the
auto-increment field btw).
* Despite the unchanged 'Master' moniker, $Step->GetMasterKey() considers $Step
to be the master object of the Tasks it contains and thus includes the step's
key in the returned columns. This means $Step->GetMasterKey() returns (JobId,
StepNo).
* Despite not having the 'Master' moniker, $Step->GetFullKey() works the same
as $Step->GetMasterKey() but returns the column values as a single string
'$JobId#@#$StepNo'.
6. Filters on Detailref collections
It's possible to put a filter on a collection to only get a subset of the
corresponding rows. For instance $Job->Steps->AddFilter('Status', ['queued'])
ensures that one will only get the queued steps of $Job.
But Detailref collections are stored as a field of the Item they belong to.
This means $Job->Steps always returns the same collection object. So once a
piece of code has set a filter on it, to only return 'queued' steps for
instance, all other parts of the code will only get the 'queued' steps, no
matter what they need. Also there is no method for cloning a collection (so one
cannot do $Job->Steps->Clone()->AddFilter()), or for removing a filter.
For instance:
$Job->Steps->AddFilter('Status', ['queued']);
...
# Here UpdateStatus() will only take into account the queued steps!
$Job->UpdateStatus();
Note also that it's not entirely trivial to work around. It's tempting to do
something like:
$Job->Steps->AddFilter('Status', ['queued']);
...
# Make sure the database contains an up-to-date view of all the Steps and
# Tasks in $Job.
$Job->Save();
# Then create a new job object from the database
my $TmpJob = CreateJobs()->GetItem($Job->Id);
# Now we can update the status without fearing bad filters.
$TmpJob->UpdateStatus();
# But here $Job->Status could still be wrong so any code that still uses
# $Job will be lead astray. So update $Job.
$Job->Status($TmpJob->Status)
# But that still leaves out every Step and Task object referenced by $Job
# Also saving $Job will save $Job->Status, again. What could go wrong?
7. Filters vs. loading from the database
Once a collection has been loaded from the database, adding a filter to it has
no effect. That's because filtering happens by tweaking the SQL query and
changing the filter does not mark the collection for reloading.
Again this issue is made more severe because of the way Detailref collections
are handled. If a piece of code has caused the $Job->Steps collection to be
loaded, then adding a filter elsewhere will have no effect.
For instance:
$Job->UpdateStatus(); # calls $Job->GetItems(), loading it from DB
...
$Job->Steps->AddFilter('Status', ['queued']);
foreach my $Step ($Job->Steps->GetItem())
# Here we will get all steps, not just the queued ones!
8. No "or" operator in filters
Originally the filters only allowed one to request that a field be in a set of
admissible values. This was extended to allow requesting for a field to be less
than, greater than or like some value.
However it is still not possible to use an "or" operator in filters. So for
instance one cannot retrieve all Steps that completed recently or correspond to
a WineTest run (WHERE Ended > 5 minutes ago OR User == 'batch').
9. No Itemref support for multiple key fields.
A Task has a VMName field which is a foreign key referencing a VM. Through the
use of an Itemref property one can directly access the VM with $Task->VM. But
we cannot do the same thing for steps.
The primary key of a step has two fields, (JobId, No). A step also has a
PreviousNo field which identifies the step it depends on. So we would want to
be able to access the previous step through $Step->Previous by using an Itemref
property:
CreateItemrefPropertyDescriptor("Previous", "Previous step", !1, !1,
\&CreateSteps, ["JobId", "PreviousNo"]),
However this fails with a "Multiple key components not supported" error. Note
that for this to work we would also need a way to tell the Itemref that the
Step.PreviousNo field should be mapped to Step.No. But there is no way to do
so.
10. Collection::GetItem() blindly adds the item to the collection
Collections have a GetItem() method that returns an item when given a string
containing that object's key.
So using the Step example above, if we still have the right $Job->Steps
collection accessible, we can easily get the Previous step through:
$Job->Steps->GetItem($Step->PreviousNo)
However this also adds $Step->PreviousNo to the $Job->Steps collection,
regardless of what the filter on that collection is. So when the scheduler
analyzes the queued and running steps to figure out whether the one they depend
on, $Step->PreviousNo, has completed, it also unwittingly adds the previous
step to the $Job->Step collection. So the next iteration on the collection may
return completed steps despite expectations.
11. Save order issues
The TestBot ORM automatically takes care of saving parent objects before the
child objects they contain. In practice, if you create a Job > Step > Task
hierarchy you can count on the TestBot ORM to save the Job before saving the
Steps that use the JobId as part of their key and so on.
But this breaks down for $Step->PreviousNo. There you have to make sure to save
the steps in the right order otherwise you get an SQL error.
Similarly deletions must be performed in the right order. Fortunately this is
mostly transparent since we only delete whole Jobs and Job::OnDelete() takes
care of blanking the Step::PreviousNo fields before recursing.
12. No Order-by support
There are a many cases where we retrieve a number of rows from the database and
then do a simple alphabetical or numerical sort on them. That's the kind of
thing that the database would do much faster than Perl. This is mostly an issue
for the activity and statistics web pages because of the number of RecordGroups
they handle.
So it would be nice to be able to specify an Order-By SQL directive when
retrieving the objects. However this would run into the same issues as the
filters for Detailref collections with regards to already loaded collections,
and GetItem() not knowing where to insert freshly loaded objects.
13. No support for joins
There are a few cases where doing a join could be useful.
For instance when reporting the activity what we really want is all the Records
rows corresponding to a RecordGroup that is less than 12 hours old. For now we
have to proceed indirectly: we query all the RecordGroup objects that are less
than 12 hours old, take the lowest GroupId we find and then retrieve all the
Records that have a Group Id greater than that.
A different type of join could also be useful in many other places: currently
we first retrieve the jobs and then we do one more SQL request per job to
retrieve its steps and then one per step to retrieve the tasks. A join could
let us load it all in one request. Fortunately we don't have many jobs so
unlike in the activity case this does not have a significant performance
impact.
14. Performance
Most parts of the TestBot don't have much processing to do so that performance
is not an issue (though there is not really any hard data).
Things are different for the activity and statistics page. The statistics page
is the worst and generating it takes over a dozen seconds. That's annoying
because of the load it puts on the TestBot web server. It's also really long
for a mere couple dozen thousand Records. Not all of it comes from the ORM but
over 50% of it does.
There are some relatively obvious paths for improvement. For instance accessing
a field like $Job->Ended causes the ORM to loop over all of a job's property
descriptors until it finds one called 'Ended', and then it returns the value
from a hash table. It should be possible to make it so that most of the time
the value is returned directly from the hash table. Detailref and Itemref
properties have their own hash tables and so must be handled separately. But
hat could likely also be changed.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=52811
Bug ID: 52811
Summary: Apps starting with wrong non-client area decoration
Product: Wine
Version: 7.6
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: trivial
Priority: P2
Component: user32
Assignee: wine-bugs(a)winehq.org
Reporter: leandrohr(a)riseup.net
Distribution: ---
Created attachment 72186
--> https://bugs.winehq.org/attachment.cgi?id=72186
Small client to reproduce the bug
Arch Linux
wine-6.0-rc1-11894-gafd7b319e56
---
# Bug description
During the development of the Wine Wayland driver we've noticed a bug that also
affects the X11 driver when using client-side decorations.
Some applications start with the wrong decoration. It's a visual-only issue, as
the application starts with focus and works nicely. But its non-client area
starts with the decoration of inactive applications (greyed out).
This is how it should start:
https://share.collabora.com/index.php/s/tZQxBEaybgwGgpi
But this is how it looks like:
https://share.collabora.com/index.php/s/bQbASjTXg8oxg3W
---
# How to reproduce
You can easily reproduce this by running notepad with the X11 driver option
"Decorated" set to "N". I wrote some small clients to debug this, and the
simple program attached reproduces the issue. TLDR: it is a program that
activates a window of a non-foreground thread and then tries to show it.
---
# What I think is going on
When we call SetActiveWindow(hwnd), hwnd does not become the foreground window,
as the application thread is not the foreground thread yet (at this point the
desktop window is the foreground window). SetActiveWindow() activates the
non-client area only if the window is the foreground window, so we have
activated the window but didn't activate its non-client area (which is correct
AFAIU).
Next we call ShowWindow(hwnd), and now the thread that owns hwnd should become
foreground and SetActiveWindow(hwnd) is called. But as hwnd is already active
it does nothing and returns, so the non-client area is draw as inactive.
---
# Possible fix
In order to fix this, we could change SetActiveWindow() behavior to the
following:
if (hwnd == current active window)
if (hwnd == NtUserGetForegroundWindow() && non-client area of hwnd not
active)
activate non-client area of hwnd
bail out
I wrote a test for this, and I could see that this fix didn't break any other
tests. I've decided to post here in order to know if the fix seems reasonable
to you.
Also, I had a question while debugging this and still couldn't figure out. I
thought that focus was a global property related to the foreground window. But
it seems that when a window is set to active the function to change the focus
to it may also be called (even when the window does not belong to the
foreground thread). So can a non-foreground window be active and have the
focus?
---
Thanks a lot!
--
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.
https://bugs.winehq.org/show_bug.cgi?id=51538
Bug ID: 51538
Summary: Control can no longer launch from an ntfs partition
Product: Wine-staging
Version: 6.13
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: ritalat(a)fastmail.com
CC: leslie_alistair(a)hotmail.com, z.figura12(a)gmail.com
Distribution: ---
Created attachment 70377
--> https://bugs.winehq.org/attachment.cgi?id=70377
control console output
I have a shared NTFS partition that I have used between Arch Linux and Windows
10 for a few years now. I have been able to play games such as Control in the
past from it. Now multiple games fail to launch from that partition with
similar "err:module:import_dll Library X not found" errors. Copying the entire
game to a ext4 partition fixes the issue.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=52378
Bug ID: 52378
Summary: Python WMI: AttributeError: wbemErrInvalidQuery
Product: Wine
Version: 7.0-rc5
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: danielsuarez369(a)protonmail.com
Distribution: ---
Created attachment 71591
--> https://bugs.winehq.org/attachment.cgi?id=71591
Full output when importing wmi in Python.
When attempting to import the "wmi" module in Python it returns an
AttributeError: wbemErrInvalidQuery.
Steps to reproduce are:
1. Install Python (`wget
https://www.python.org/ftp/python/3.10.1/python-3.10.1-amd64.exe" && wine
python-3.10.1-amd64.exe`)
2. Install the WMI module (`wine python -m pip install WMI`)
3. Try to import the module (`wine python -c "import wmi"`)
This is also reproducible with Pyinstaller executables that import it.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=52327
Bug ID: 52327
Summary: Wrong WM_CONTEXTMENU default message processing
Product: Wine-staging
Version: 7.0-rc3
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: yal(a)csoftcom.com
CC: leslie_alistair(a)hotmail.com, z.figura12(a)gmail.com
Distribution: ---
wine_master\dlls\user32\defwnd.c:323
wParam must point to _current_ child window hwnd when default process this
message.
https://docs.microsoft.com/en-us/windows/win32/menurc/wm-contextmenu
case WM_CONTEXTMENU:
if (GetWindowLongW( hwnd, GWL_STYLE ) & WS_CHILD)
SendMessageW( GetParent(hwnd), msg, wParam, lParam );<=wParam must be this
hwnd
else
--------------------------------------------------------------
case WM_CONTEXTMENU:
if (GetWindowLongW( hwnd, GWL_STYLE ) & WS_CHILD)
SendMessageW( GetParent(hwnd), msg, (WPARAM)hwnd, lParam );
else
--
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.
https://bugs.winehq.org/show_bug.cgi?id=52141
Bug ID: 52141
Summary: NetAPI detection in configure is broken
Product: Wine
Version: unspecified
Hardware: x86-64
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P2
Component: build-env
Assignee: wine-bugs(a)winehq.org
Reporter: gijsvrm(a)gmail.com
Created attachment 71188
--> https://bugs.winehq.org/attachment.cgi?id=71188
config.log
This seems to be specific to macOS. I'm running macOS 10.14, building with
10.13 SDK and mingw.
configure seems to pick up NetAPI, but still shows the notice saying it's not
present.
checking for -lnetapi... libnetapi.dylib
configure: libnetapi not found, Samba NetAPI won't be supported.
Attached is config.log.
This check was added in
<https://source.winehq.org/git/wine.git/commit/07c9dd9bdf560f86598aa496a0ffa…>,
but I don't think this qualifies as a regression.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=52102
Bug ID: 52102
Summary: outSPOKEN 3.0 demo crashes after error "Accessing
unknown VxD 3167"
Product: Wine
Version: 6.22
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: alexhenrie24(a)gmail.com
Distribution: ---
Created attachment 71122
--> https://bugs.winehq.org/attachment.cgi?id=71122
Console output
Steps to reproduce:
1. Delete ~/.wine or move it to another location.
2. Create a new Wine bottle with the command `WINEARCH=win32 wine winecfg` and
set the Windows version to 95 or 98.
3. Run `wine osw30demo.exe` to install outSPOKEN. The setup wizard will not
complete until you select a speech synthesizer from the list. When the wizard
asks which COM port the speech synthesizer is connected to, select "Internal".
4. Run `wine 'C:\Osw\OSW.EXE'` to start outSPOKEN.
outSPOKEN crashes immediately. Console output is attached.
$ sha256sum osw30demo.exe
89ae45e689e35b0618b1b4fa27fb0c3e5b854461391100e2dc1742395ffa77b6
--
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.
https://bugs.winehq.org/show_bug.cgi?id=51983
Bug ID: 51983
Summary: foobar2000 v1.5.1+ crashes on startup with Wine v6.6+
with Windows version set to "Windows 10"
Product: Wine
Version: 6.6
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs(a)winehq.org
Reporter: the.derivative.of.calculus(a)gmail.com
Distribution: ---
Created attachment 70970
--> https://bugs.winehq.org/attachment.cgi?id=70970
foobar2000 1.5.1 crash with windows 10 profile
I had an old version of foobar2000 that I had never got around to upgrading, so
I only recently came across this issue. Looking online it appears that a few
people ran into it starting with v6.6, and it still exists with v6.20 (and as
far as I can tell no one bothered to report it):
https://forum.winehq.org/viewtopic.php?t=35166https://hydrogenaud.io/index.php?topic=54933.525
When you start foobar2000 with Windows version set to "Windows 8.1" or below it
runs normally. However, if you use "Windows 10" the application window briefly
appears before the whole application crashes. Testing it, this affects
foobar2000 v1.5.1+
Looking through foobar2000's changelog: https://www.foobar2000.org/changelog
The one thing mentioning Windows 10 is:
Reworked integration with Windows 10 Universal Volume Control. Enabled by
default once again.
Looking at the error messages:
0024:fixme:combase:RoGetActivationFactory
(L"Windows.Media.Playback.BackgroundMediaPlayer",
{00000035-0000-0000-c000-000000000046}, 0032F9E4): semi-stub
0024:err:combase:RoGetActivationFactory Failed to find library for
L"Windows.Media.Playback.BackgroundMediaPlayer"
I'm wondering if there's a regression with Wine's handling of media controls
for Windows 10 or equivalent.
--
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.
https://bugs.winehq.org/show_bug.cgi?id=50526
Bug ID: 50526
Summary: ConEmu wineconsole Ctrl+m has different behavior
Product: Wine
Version: 6.0
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: inseng
Assignee: wine-bugs(a)winehq.org
Reporter: adrianekaleksander(a)gmail.com
Distribution: ---
Cmd on Windows:
Ctrl+M moves the cursor to the next line (ENTER key)
On wine:
Ctrl+M shows ^M
1.Open wineconsole
2.Press ctrl+m
--
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.