[Bug 37798] New: Warframe crashes on login when pasting the username or password from clipboard
wine-bugs at winehq.org
wine-bugs at winehq.org
Sun Dec 28 16:58:26 CST 2014
https://bugs.winehq.org/show_bug.cgi?id=37798
Bug ID: 37798
Summary: Warframe crashes on login when pasting the username or
password from clipboard
Product: Wine
Version: 1.7.33
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: user32
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Distribution: ---
Hello folks,
as the summary says.
The launcher can be bypassed using following command from game directory
(assuming full/up-to-date install):
--- snip ---
$ wine "Warframe.exe" -fullscreen:0 -dx10:0 -dx11:0 -threadedworker:1
-cluster:public -language:en -relaunch
--- snip ---
Relevant part of trace log:
NOTE: 'msvcr110.*' should be excluded from relay trace to avoid lots of log
spam and a potential app bug on '__libm_sse2_tanf' usage (changed stack
layout/relay thunks triggers it).
--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+debugstr,+clipboard wine ./Warframe.exe
-fullscreen:0 -dx10:0 -dx11:0 -threadedworker:1 -cluster:public -language:en
-relaunch >>log.txt 2>&1
...
<copy/paste here>
...
0023:Call user32.OpenClipboard(00000000) ret=012c6074
0023:trace:clipboard:OpenClipboard ((nil))...
0023:trace:clipboard:OpenClipboard returning 1
0023:Ret user32.OpenClipboard() retval=00000001 ret=012c6074
0023:Call user32.GetClipboardData(0000000d) ret=012c6085
0023:trace:clipboard:GetClipboardData 000d
0023:Call winex11.drv.GetClipboardData(0000000d) ret=7e98d7b0
0023:trace:clipboard:X11DRV_GetClipboardData (000D)
0023:trace:clipboard:X11DRV_EmptyClipboard 0 entries remaining in cache.
0023:trace:clipboard:X11DRV_CLIPBOARD_QueryAvailableData Type 4,Format
32,nItems 10, Remain 0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#4
Property(298): --> Format CF_UNICODETEXT
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=000d
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x1483a8 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#5
Property(502): --> Format CF_UNICODETEXT
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=000d
lpData=0x1c9872b0 hData=(nil) flags=0x00000000 lpFormat=0x1483c8 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#7
Property(31): --> Format CF_TEXT
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=0001
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x1481c8 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#9
Property(505): --> Format CF_TEXT
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=0001
lpData=0x2346a210 hData=(nil) flags=0x00000000 lpFormat=0x1481e8 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c055 L"TIMESTAMP" drvData 452
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#0
Property(452): --> Format c055 L"TIMESTAMP"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c055
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x237f9840 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c056 L"TARGETS" drvData 451
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#1
Property(451): --> Format c056 L"TARGETS"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c056
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x245f7ae0 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c057 L"MULTIPLE" drvData 448
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#2
Property(448): --> Format c057 L"MULTIPLE"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c057
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x245e9588 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c058 L"SAVE_TARGETS" drvData 450
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#3
Property(450): --> Format c058 L"SAVE_TARGETS"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c058
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x2379bb08 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c059 L"TEXT" drvData 503
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#4
Property(503): --> Format c059 L"TEXT"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c059
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x245dcbf0 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardFormat Registering format
c05a L"text/plain;charset=utf-8" drvData 504
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertSelectionProperties Atom#5
Property(504): --> Format c05a L"text/plain;charset=utf-8"
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=c05a
lpData=(nil) hData=(nil) flags=0x00000000 lpFormat=0x245b93d0 override=0
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 0001
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 0007
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=0007
lpData=(nil) hData=(nil) flags=0x00000002 lpFormat=(nil) override=1
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 000d
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 000e
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 0003
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 0008
0023:trace:clipboard:X11DRV_CLIPBOARD_SynthesizeData 0002
0023:trace:clipboard:X11DRV_EndClipboardUpdate 1 formats added to cached data
0023:trace:clipboard:X11DRV_CLIPBOARD_RenderFormat 0x000d hData((nil))
0023:trace:clipboard:X11DRV_CLIPBOARD_ReadSelectionData 000d
0023:trace:clipboard:X11DRV_CLIPBOARD_ReadSelectionData Requesting conversion
of CF_UNICODETEXT property (298) from selection type 000001bb
0023:trace:clipboard:X11DRV_CLIPBOARD_GetProperty Reading property 517 from X
window 4400008
0023:trace:clipboard:X11DRV_CLIPBOARD_InsertClipboardData format=000d
lpData=0x1c9872b0 hData=0x245acbb2 flags=0x00000000 lpFormat=0x1483a8
override=1
0023:trace:clipboard:X11DRV_CLIPBOARD_FreeData 000d
0023:trace:clipboard:X11DRV_CLIPBOARD_ReadSelectionData Returning 1
0023:trace:clipboard:X11DRV_GetClipboardData returning 0x245acbb2 (type 000d)
0023:Ret winex11.drv.GetClipboardData() retval=245acbb2 ret=7e98d7b0
0023:trace:clipboard:GetClipboardData returning 0x245acbb2
0023:Ret user32.GetClipboardData() retval=245acbb2 ret=012c6085
0023:Call KERNEL32.GlobalLock(245acbb2) ret=012c6096
0023:Ret KERNEL32.GlobalLock() retval=245aca40 ret=012c6096
0023:Call KERNEL32.GlobalUnlock(245acbb2) ret=012c610d
0023:Ret KERNEL32.GlobalUnlock() retval=00000000 ret=012c610d
0023:Call KERNEL32.GetLastError() ret=0040b47b
0023:Ret KERNEL32.GetLastError() retval=00000000 ret=0040b47b
...
0024:Call KERNEL32.OutputDebugStringA(0034c797 "Assert
[ClipboardWindows.cpp:80]") ret=00408c20
--- snip ---
Debugger session:
--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x7e98d6c2 GetClipboardData+0x15(wFormat=0xd)
[/home/focht/projects/wine/wine.repo/src/dlls/user32/clipboard.c:521] in user32
(0x0033ee80)
1 0x012c6085 in warframe (+0xec6084) (0x2cb96190)
2 0x015da5f4 in warframe (+0x11da5f3) (0x0f8ccd60)
3 0x00000005 (0x014a0ea8)
4 0x00a8db10 in warframe (+0x68db0f) (0x00a4f6e0)
5 0xffffbbb8 (0xe8f18b56)
Wine-dbg>si
0x012c6106: pushl %esi
Wine-dbg>ni
0x012c6107: call *0x13a01e4 -> 0x7b846518 GlobalUnlock
[/home/focht/projects/wine/wine.repo/src/dlls/kernel32/heap.c:485] in kernel32
Wine-dbg>
0x012c610d: testl %eax,%eax
Wine-dbg>
0x012c610f: jnz 0x012c611c
Wine-dbg>
0x012c6111: pushl $0x1565580
Wine-dbg>
0x012c6116: call *0x1571240 -> 0x0040b3e0 ; assert()
Wine-dbg>info reg
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:012c6116 ESP:0033ee88 EBP:2cb96190 EFLAGS:00000246( - -- I Z- -P- )
EAX:00000000 EBX:00001d81 ECX:0033ee88 EDX:00110064
ESI:18144842 EDI:0033eee0
--- snip ---
It seems the game engine code expects a non-zero return value from
'GlobalUnlock' after copying the clipboard data into a private buffer.
This suggests that the clipboard code itself holds an own reference count to
all data objects returned by 'GetClipboardData' - which makes sense since it
manages the lifetime - not the app.
I tested a small fix, locking the object before return (incrementing refcount).
It allows copy/paste of username/password in login screen.
$ sha1sum Warframe.msi
8397ed32bb8f88d2cb20f9397d3b1770ea826a68 Warframe.msi
$ du -sh Warframe.msi
26M Warframe.msi
$ wine --version
wine-1.7.33-84-gfecbc88
Regards
--
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