http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From focht(a)gmx.net 2007-25-04 06:06 -------
Hello,
next one ...
--- snip ---
wine: Call from 0x7b840750 to unimplemented function atl.dll.AtlComQIPtrAssign,
aborting
--- snip ---
Add/modify the following:
--- snip dlls/atl/atl.spec ---
31 stdcall AtlComQIPtrAssign(ptr ptr ptr)
--- snip dlls/atl/atl.spec ---
and (below AtlComPtrAssign()):
--- snip dlls/atl/atl_main.c ---
IUnknown* WINAPI AtlComQIPtrAssign(IUnknown** pp, IUnknown* p, REFIID riid)
{
TRACE("(%p, %p, %p)\n", pp, p, riid);
*pp = NULL;
if (p) IUnknown_QueryInterface( p, riid, pp);
if (*pp) IUnknown_Release(*pp);
return *pp;
}
--- snip dlls/atl/atl_main.c ---
That should fix this error.
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From focht(a)gmx.net 2007-25-04 05:54 -------
Hello,
ah i was about to post that bug in AtlModuleGetClassObject() too (i had done
same modification earlier).
After i cleaned up my source tree, i realized both patches are necessary to work
around :)
For the AtlIPersistStreamInit_Load() issue you might just provide stubs.
That ATL PersistStream stuff should belong in its own module ...
--- snip dlls/atl/atl_main.c ---
HRESULT WINAPI AtlIPersistStreamInit_Load( LPSTREAM pStm, void* pMap,
void* pThis, IUnknown* pUnk)
{
FIXME("(%p, %p, %p, %p)\n", pStm, pMap, pThis, pUnk);
/* NOTE: pMap is ATL_PROPMAP_ENTRY */
return S_OK;
}
HRESULT WINAPI AtlIPersistStreamInit_Save(LPSTREAM pStm, BOOL fClearDirty,
void* pMap, void* pThis, IUnknown* pUnk)
{
FIXME("(%p, %d, %p, %p, %p)\n", pStm, fClearDirty, pMap, pThis, pUnk);
/* NOTE: pMap is ATL_PROPMAP_ENTRY */
return S_OK;
}
--- snip dlls/atl/atl_main.c ---
and
--- snip dlls/atl/atl.spec ---
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
--- snip dlls/atl/atl.spec ---
Returning S_OK should do it for now. If you return E_FAIL, the app just exists.
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From rob(a)codeweavers.com 2007-25-04 05:52 -------
No. We shouldn't really look at the Microsoft source. Clean-room engineering practice is for one person to
describe what the original code does and another person to code their interpretation of the described
code.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From andrey.turkin(a)gmail.com 2007-25-04 05:45 -------
There are sources available, but we cannot port them, do we?
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
rob(a)codeweavers.com changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|rob(a)codeweavers.com |wine-bugs(a)winehq.org
Status|ASSIGNED |NEW
Component|wine-misc |wine-atl
------- Additional Comments From rob(a)codeweavers.com 2007-25-04 05:39 -------
Patches sent for the strange crashes:
http://www.winehq.org/pipermail/wine-patches/2007-April/038549.html
and
http://www.winehq.org/pipermail/wine-patches/2007-April/038551.html
Now the application crashes with this:
wine: Unimplemented function atl.dll.AtlIPersistStreamInit_Load called at address...
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=4362
truiken(a)gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |julliard(a)codeweavers.com
------- Additional Comments From truiken(a)gmail.com 2007-25-04 05:24 -------
Thanks for doing the regression test.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.winehq.org/show_bug.cgi?id=4362
------- Additional Comments From karllinuxtest.relton(a)ntlworld.com 2007-25-04 05:18 -------
patch 3e2f2a5265f11e7a8cee57dab90558be1f90b3b7 introduced this regression:
Allow nested hardware message processing by storing a unique id in
every message and using it to manage the current queue position.
Better filtering of hardware messages to avoid returning messages that
have no chance to match the filter.
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From focht(a)gmx.net 2007-25-04 04:56 -------
Hello,
--- quote ---
Could you please provide +relay,+atl log?
--- quote ---
Not necessary, already found it.
Caused by a bug in wine ATL AtlInternalQueryInterface() implementation.
Getting a patch from following information into git is left to you :)
--- snip dlls/atl/atl_main.c ---
HRESULT WINAPI AtlInternalQueryInterface(void* this, const _ATL_INTMAP_ENTRY*
pEntries, REFIID iid, void** ppvObject)
{
int i = 0;
HRESULT rc = E_NOINTERFACE;
TRACE("(%p, %p, %p, %p)\n",this, pEntries, iid, ppvObject);
if (IsEqualGUID(iid,&IID_IUnknown))
{
TRACE("Returning IUnknown\n");
*ppvObject = this;
IUnknown_AddRef((IUnknown*)this);
return S_OK;
}
....
--- snip dlls/atl/atl_main.c ---
The code to get the first interface (e.g. client says "give me IUnknown") is wrong.
And you should really validate [out] param...
--- snip dlls/atl/atl_main.c ---
HRESULT WINAPI AtlInternalQueryInterface(void* this, const _ATL_INTMAP_ENTRY*
pEntries, REFIID iid, void** ppvObject)
{
int i = 0;
HRESULT rc = E_NOINTERFACE;
TRACE("(%p, %p, %p, %p)\n",this, pEntries, iid, ppvObject);
if (ppvObject == NULL)
return E_POINTER;
*ppvObject = NULL;
/* first interface (IUnknown) requested by client? */
if (IsEqualGUID(iid,&IID_IUnknown))
{
TRACE("Returning IUnknown\n");
*ppvObject = (IUnknown*)((int)this+pEntries->dw);
IUnknown_AddRef((IUnknown*)*ppvObject);
return S_OK;
}
...
--- snip dlls/atl/atl_main.c ---
Now it works as expected.
Though the software crashes later (due to other issues).
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From andrey.turkin(a)gmail.com 2007-25-04 04:48 -------
Anastasius,
Could you please provide +relay,+atl log?
Thanks!
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
http://bugs.winehq.org/show_bug.cgi?id=7949
------- Additional Comments From focht(a)gmx.net 2007-25-04 04:39 -------
Created an attachment (id=5930)
--> (http://bugs.winehq.org/attachment.cgi?id=5930&action=view)
test client which mimics application code to reproduce crash
Hello,
debugged this thing down...
Attached is a test client which mimics the application code before the crash.
The wrappers used are autogenerated from application dll typelib (using
#import)
windows: fine, prints out product id
wine (native ATL): fine, prints out product id
wine (builtin ATL): crash
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.