http://bugs.winehq.com/show_bug.cgi?id=904
------- Additional Comments From fgouget(a)codeweavers.com 2002-07-21 16:20 -------
Created an attachment (id=237)
Incomplete&untested fix
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=904>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=904
Summary: Solaris: Add threading support
Product: Wine
Version: CVS
Platform: PC
OS/Version: Solaris
Status: NEW
Severity: normal
Priority: P2
Component: wine-ports
AssignedTo: wine-bugs(a)winehq.com
ReportedBy: fgouget(a)codeweavers.com
Threading does not work correctly on Solaris (an issue for both x86 and Sparc
platforms). The reason is that Linux (and FreeBSD) treat threads differently
from Solaris.
* on Linux a process can contain multiple threads and each thread gets a unique
system-wide identifier which is confusingly called a pid (process id). It can be
argued that Linux does not in fact have the notion of what a process is: there
is no object that represents the process that contains all these threads. So you
cannot kill a process, you can only kill its individual threads. This is because
you can only send signals to specific threads so that when you 'kill -9 pid',
you only kill one individual thread in the process.
* on Solaris too a process can contain multiple threads (called lightweight
processes or lwp for short). However, processes and threads are each separate
system objects. When you send a signal it is sent to the process: 'kill -9 pid'
will kill the process and all its threads. Also, individual lwps do not have a
globally unique identifier. Instead their ids (typically 0, 1, 2, etc.) are only
unique within a process. So if you want to refer to a specific lwp in the system
you must use specify both the pid and the lwpid.
Wine and in particular the Wine server, need the following functionality:
1. uniquely identify a thread in the system
2. sending a signal to a specific thread
3. precisely identifying a thread's parent thread
(for handle inheritance when creating a new process, etc. It is a
prerequisite for the debugger too)
See the following files for reference:
* server/process.c server/process.h
Where the wineserver keeps track of Windows processes
* server/thread.c server/thread.h
Where the wineserver keeps track of Windows threads
* scheduler/client.c
Called by a new Windows thread to register itself
* scheduler/process.c
Called by a new Windows process to register itself
* include/wine/server_protocol.h
Defines the structures used for the wineserver protocol
Then, to identify a thread uniquely we can:
* add a unix_pid field to the 'struct process' in server/process.h
* rename the 'unix_pid' field in 'struct thread' to 'unix_tid' in
server/thread.h
* on Linux, set unix_pid=0 and unix_tid=getpid()
* on Solaris, set unix_pid=getpid() and unix_tid=_lwp_self()
* make sure we do not write code that would identify a process by its unix_pid
(would be a tempting thing to do on Solaris but does not work on Linux)
* use both unix_pid and unix_tid whenever we need to identify a thread (i.e.
find its struct thread structure)
To send a signal to a specific thread, the solution is to use the procfs:
Open /proc/<pid>/lwp</lwpid>/lwpctl and write two ints: PCKILL followed by the
signal id. Do a man -s 4 proc or find it online at:
http://www.cs.princeton.edu/cgi-bin/man2html?proc:4
Identifying a thread's parent is harder because there is no lwp_getppid()
function. So I propose the following trick:
* just before creating a new process (in fork_and_exec), set the
WINE_PARENT_LWPID environment variable to "pid:lwpid"
* during the process initialization check for the WINE_PARENT_LWPID environment
variable and reset it right after use
* if set, make sure that the pid matches our ppid. If so, then the information
it contains is valid and the lwpid is the id of our parent lwp
(which means wrapper scripts must _exec_ wine)
* if the pid does not match our ppid, then this is a stale environment
variable: a Wine process must have started a Unix process, which in turn
launched another Wine process. But the Unix process is our parent, not the Wine
process so there are no handles to inherit anyway.
* if the variable is not set, then this Wine process was started from Unix so
there is nothing to inherit
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=904>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=901
------- Additional Comments From hoingram(a)bellsouth.net 2002-07-21 14:13 -------
i upgraded to version 20020710 but had the same error. Is there anything else I
can try?
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=901>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=903
Summary: PathIsURL returning true for invalid formats.
Product: Wine
Version: CVS
Platform: PC
URL: http://msdn.microsoft.com/library/default.asp?url=/libra
ry/en-
us/shellcc/platform/Shell/reference/shlwapi/path/pathisu
rl.asp
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: wine-binary
AssignedTo: wine-bugs(a)winehq.com
ReportedBy: dclark(a)akamail.com
According to the above URL, a "microsoft.com" should not be considered a valid
URL. It needs to be preceded with "http://". The wine implementation of
PathIsURLA returns true for those kinds of entries.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=903>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=900
------- Additional Comments From tony_lambregts(a)telusplanet.net 2002-07-21 12:23 -------
Out of curiosity how old is your computer? I do regression testing all the time
on mine.
P233 with 96 mb RAM and 40GB hardDrive. I did regression testing with a 3GB
harddrive and 32 mb ram using the same computer.
Yes it is time consuming but you can use your computer while it is doing a
compile. With the timeframe you are talking about it should take at most 6
itinerations to narrow it down to the day the patch was applied.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=900>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=900
------- Additional Comments From hogger2(a)mushworld.dnsart.com 2002-07-21 11:28 -------
There is no download for this program, however there is a for to fill out to get
the lite version on cd mailed to you for free. This is the version I used. I
have a relatively old computer, so regression testing would be very very time
consuming. However below is the url to the form to get a copy of the cd for
anyone willing to help.
http://www.cadencepcb.com/products/downloads/orcaddemo/frmorcaddemocd.asp
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=900>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=889
------- Additional Comments From tuiningas_ml(a)shaw.ca 2002-07-21 00:26 -------
I followed the trail a little bit
further as I noticed that "hot spots" on an image (like buttons) would
fade in and out when the window wasn't at the top left of the screen.
The trail led to the file dlls/x11drv/winpos.c. It is making a call to
MapWindowPoints() which in turn calls WINPOS_GetWinOffset(). If I
eliminate the call to MapWindowPoints() in the function expose_window()
at line 290, (and restore the original version of windows/winpos.c)
everything works beautifully. The window draws itself properly and the
buttons work as expected. I am not all that familiar with Wine code,
though, so can anyone think of a good reason why this code ought to be
there? Should I submit a patch? And if so, can anyone point me to the
method required for doing so? Thanks.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=889>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=901
------- Additional Comments From tony_lambregts(a)telusplanet.net 2002-07-20 23:08 -------
Well the first thing you should do is get a newer version of wine
http://www.winehq.com/download/
I recommend installing from tarball. This isn't to hard to do if you follow the
instructions in the README file. Also have a look at the wine users guide.
http://www.winehq.com/Docs/wine-user/
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=901>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://bugs.winehq.com/show_bug.cgi?id=901
------- Additional Comments From tony_lambregts(a)telusplanet.net 2002-07-20 22:57 -------
*** Bug 902 has been marked as a duplicate of this bug. ***
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://bugs.winehq.com/show_bug.cgi?id=901>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.