From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/performance.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index 111d7c60568..bbc652fe225 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -498,7 +498,7 @@ static HRESULT WINAPI performance_SendPMsg(IDirectMusicPerformance8 *iface, DMUS }
LIST_FOR_EACH_ENTRY(next, &This->messages, struct message, entry) - if (next->msg.rtTime >= message->msg.rtTime) break; + if (next->msg.rtTime > message->msg.rtTime) break; list_add_before(&next->entry, &message->entry); PostThreadMessageW(This->procThreadId, PROCESSMSG_ADD, 0, 0);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/segmentstate.c | 49 +++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/dlls/dmime/segmentstate.c b/dlls/dmime/segmentstate.c index 1a0b63419f0..3a5eee72a57 100644 --- a/dlls/dmime/segmentstate.c +++ b/dlls/dmime/segmentstate.c @@ -32,7 +32,7 @@ static inline IDirectMusicSegmentState8Impl *impl_from_IDirectMusicSegmentState8 return CONTAINING_RECORD(iface, IDirectMusicSegmentState8Impl, IDirectMusicSegmentState8_iface); }
-static HRESULT WINAPI DirectMusicSegmentState8_QueryInterface(IDirectMusicSegmentState8 *iface, REFIID riid, void **ppobj) +static HRESULT WINAPI segment_state_QueryInterface(IDirectMusicSegmentState8 *iface, REFIID riid, void **ppobj) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface);
@@ -56,7 +56,7 @@ static HRESULT WINAPI DirectMusicSegmentState8_QueryInterface(IDirectMusicSegmen return E_NOINTERFACE; }
-static ULONG WINAPI DirectMusicSegmentState8_AddRef(IDirectMusicSegmentState8 *iface) +static ULONG WINAPI segment_state_AddRef(IDirectMusicSegmentState8 *iface) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); ULONG ref = InterlockedIncrement(&This->ref); @@ -66,7 +66,7 @@ static ULONG WINAPI DirectMusicSegmentState8_AddRef(IDirectMusicSegmentState8 *i return ref; }
-static ULONG WINAPI DirectMusicSegmentState8_Release(IDirectMusicSegmentState8 *iface) +static ULONG WINAPI segment_state_Release(IDirectMusicSegmentState8 *iface) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); ULONG ref = InterlockedDecrement(&This->ref); @@ -78,64 +78,69 @@ static ULONG WINAPI DirectMusicSegmentState8_Release(IDirectMusicSegmentState8 * return ref; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetRepeats(IDirectMusicSegmentState8 *iface, DWORD* pdwRepeats) +static HRESULT WINAPI segment_state_GetRepeats(IDirectMusicSegmentState8 *iface, DWORD *pdwRepeats) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pdwRepeats); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetSegment(IDirectMusicSegmentState8 *iface, IDirectMusicSegment** ppSegment) +static HRESULT WINAPI segment_state_GetSegment(IDirectMusicSegmentState8 *iface, IDirectMusicSegment **ppSegment) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, ppSegment); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetStartTime(IDirectMusicSegmentState8 *iface, MUSIC_TIME* pmtStart) +static HRESULT WINAPI segment_state_GetStartTime(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtStart); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetSeek(IDirectMusicSegmentState8 *iface, MUSIC_TIME* pmtSeek) +static HRESULT WINAPI segment_state_GetSeek(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtSeek) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtSeek); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetStartPoint(IDirectMusicSegmentState8 *iface, MUSIC_TIME* pmtStart) +static HRESULT WINAPI segment_state_GetStartPoint(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) { IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtStart); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_SetTrackConfig(IDirectMusicSegmentState8 *iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) { +static HRESULT WINAPI segment_state_SetTrackConfig(IDirectMusicSegmentState8 *iface, + REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) +{ IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %s, %ld, %ld, %ld, %ld): stub\n", This, debugstr_dmguid(rguidTrackClassID), dwGroupBits, dwIndex, dwFlagsOn, dwFlagsOff); return S_OK; }
-static HRESULT WINAPI DirectMusicSegmentState8_GetObjectInPath(IDirectMusicSegmentState8 *iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject) { +static HRESULT WINAPI segment_state_GetObjectInPath(IDirectMusicSegmentState8 *iface, DWORD dwPChannel, + DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void **ppObject) +{ IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %ld, %ld, %ld, %s, %ld, %s, %p): stub\n", This, dwPChannel, dwStage, dwBuffer, debugstr_dmguid(guidObject), dwIndex, debugstr_dmguid(iidInterface), ppObject); return S_OK; }
-static const IDirectMusicSegmentState8Vtbl DirectMusicSegmentState8Vtbl = { - DirectMusicSegmentState8_QueryInterface, - DirectMusicSegmentState8_AddRef, - DirectMusicSegmentState8_Release, - DirectMusicSegmentState8_GetRepeats, - DirectMusicSegmentState8_GetSegment, - DirectMusicSegmentState8_GetStartTime, - DirectMusicSegmentState8_GetSeek, - DirectMusicSegmentState8_GetStartPoint, - DirectMusicSegmentState8_SetTrackConfig, - DirectMusicSegmentState8_GetObjectInPath +static const IDirectMusicSegmentState8Vtbl segment_state_vtbl = +{ + segment_state_QueryInterface, + segment_state_AddRef, + segment_state_Release, + segment_state_GetRepeats, + segment_state_GetSegment, + segment_state_GetStartTime, + segment_state_GetSeek, + segment_state_GetStartPoint, + segment_state_SetTrackConfig, + segment_state_GetObjectInPath, };
/* for ClassFactory */ @@ -146,7 +151,7 @@ HRESULT create_dmsegmentstate(REFIID riid, void **ret_iface)
*ret_iface = NULL; if (!(obj = calloc(1, sizeof(*obj)))) return E_OUTOFMEMORY; - obj->IDirectMusicSegmentState8_iface.lpVtbl = &DirectMusicSegmentState8Vtbl; + obj->IDirectMusicSegmentState8_iface.lpVtbl = &segment_state_vtbl; obj->ref = 1;
hr = IDirectMusicSegmentState8_QueryInterface(&obj->IDirectMusicSegmentState8_iface, riid, ret_iface);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/segmentstate.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/dlls/dmime/segmentstate.c b/dlls/dmime/segmentstate.c index 3a5eee72a57..b49308369ac 100644 --- a/dlls/dmime/segmentstate.c +++ b/dlls/dmime/segmentstate.c @@ -1,5 +1,4 @@ -/* IDirectMusicSegmentState8 Implementation - * +/* * Copyright (C) 2003-2004 Rok Mandeljc * * This program is free software; you can redistribute it and/or @@ -22,19 +21,20 @@
WINE_DEFAULT_DEBUG_CHANNEL(dmime);
-typedef struct IDirectMusicSegmentState8Impl { +struct segment_state +{ IDirectMusicSegmentState8 IDirectMusicSegmentState8_iface; LONG ref; -} IDirectMusicSegmentState8Impl; +};
-static inline IDirectMusicSegmentState8Impl *impl_from_IDirectMusicSegmentState8(IDirectMusicSegmentState8 *iface) +static inline struct segment_state *impl_from_IDirectMusicSegmentState8(IDirectMusicSegmentState8 *iface) { - return CONTAINING_RECORD(iface, IDirectMusicSegmentState8Impl, IDirectMusicSegmentState8_iface); + return CONTAINING_RECORD(iface, struct segment_state, IDirectMusicSegmentState8_iface); }
static HRESULT WINAPI segment_state_QueryInterface(IDirectMusicSegmentState8 *iface, REFIID riid, void **ppobj) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface);
TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
@@ -58,7 +58,7 @@ static HRESULT WINAPI segment_state_QueryInterface(IDirectMusicSegmentState8 *if
static ULONG WINAPI segment_state_AddRef(IDirectMusicSegmentState8 *iface) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p): %ld\n", This, ref); @@ -68,7 +68,7 @@ static ULONG WINAPI segment_state_AddRef(IDirectMusicSegmentState8 *iface)
static ULONG WINAPI segment_state_Release(IDirectMusicSegmentState8 *iface) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p): %ld\n", This, ref); @@ -80,35 +80,35 @@ static ULONG WINAPI segment_state_Release(IDirectMusicSegmentState8 *iface)
static HRESULT WINAPI segment_state_GetRepeats(IDirectMusicSegmentState8 *iface, DWORD *pdwRepeats) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pdwRepeats); return S_OK; }
static HRESULT WINAPI segment_state_GetSegment(IDirectMusicSegmentState8 *iface, IDirectMusicSegment **ppSegment) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, ppSegment); return S_OK; }
static HRESULT WINAPI segment_state_GetStartTime(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtStart); return S_OK; }
static HRESULT WINAPI segment_state_GetSeek(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtSeek) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtSeek); return S_OK; }
static HRESULT WINAPI segment_state_GetStartPoint(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %p): stub\n", This, pmtStart); return S_OK; } @@ -116,7 +116,7 @@ static HRESULT WINAPI segment_state_GetStartPoint(IDirectMusicSegmentState8 *ifa static HRESULT WINAPI segment_state_SetTrackConfig(IDirectMusicSegmentState8 *iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %s, %ld, %ld, %ld, %ld): stub\n", This, debugstr_dmguid(rguidTrackClassID), dwGroupBits, dwIndex, dwFlagsOn, dwFlagsOff); return S_OK; } @@ -124,7 +124,7 @@ static HRESULT WINAPI segment_state_SetTrackConfig(IDirectMusicSegmentState8 *if static HRESULT WINAPI segment_state_GetObjectInPath(IDirectMusicSegmentState8 *iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void **ppObject) { - IDirectMusicSegmentState8Impl *This = impl_from_IDirectMusicSegmentState8(iface); + struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); FIXME("(%p, %ld, %ld, %ld, %s, %ld, %s, %p): stub\n", This, dwPChannel, dwStage, dwBuffer, debugstr_dmguid(guidObject), dwIndex, debugstr_dmguid(iidInterface), ppObject); return S_OK; } @@ -146,7 +146,7 @@ static const IDirectMusicSegmentState8Vtbl segment_state_vtbl = /* for ClassFactory */ HRESULT create_dmsegmentstate(REFIID riid, void **ret_iface) { - IDirectMusicSegmentState8Impl* obj; + struct segment_state *obj; HRESULT hr;
*ret_iface = NULL;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/segmentstate.c | 30 +++++++++++++++++++----------- dlls/dmime/tests/dmime.c | 10 +++++----- 2 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/dlls/dmime/segmentstate.c b/dlls/dmime/segmentstate.c index b49308369ac..655940311b3 100644 --- a/dlls/dmime/segmentstate.c +++ b/dlls/dmime/segmentstate.c @@ -78,38 +78,46 @@ static ULONG WINAPI segment_state_Release(IDirectMusicSegmentState8 *iface) return ref; }
-static HRESULT WINAPI segment_state_GetRepeats(IDirectMusicSegmentState8 *iface, DWORD *pdwRepeats) +static HRESULT WINAPI segment_state_GetRepeats(IDirectMusicSegmentState8 *iface, DWORD *repeats) { struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); - FIXME("(%p, %p): stub\n", This, pdwRepeats); + FIXME("(%p, %p): semi-stub\n", This, repeats); return S_OK; }
-static HRESULT WINAPI segment_state_GetSegment(IDirectMusicSegmentState8 *iface, IDirectMusicSegment **ppSegment) +static HRESULT WINAPI segment_state_GetSegment(IDirectMusicSegmentState8 *iface, IDirectMusicSegment **segment) { struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); - FIXME("(%p, %p): stub\n", This, ppSegment); - return S_OK; + + FIXME("(%p, %p): semi-stub\n", This, segment); + + *segment = NULL; + return DMUS_E_NOT_FOUND; }
-static HRESULT WINAPI segment_state_GetStartTime(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) +static HRESULT WINAPI segment_state_GetStartTime(IDirectMusicSegmentState8 *iface, MUSIC_TIME *start_time) { struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); - FIXME("(%p, %p): stub\n", This, pmtStart); + FIXME("(%p, %p): semi-stub\n", This, start_time); + *start_time = -1; return S_OK; }
-static HRESULT WINAPI segment_state_GetSeek(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtSeek) +static HRESULT WINAPI segment_state_GetSeek(IDirectMusicSegmentState8 *iface, MUSIC_TIME *seek_time) { struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); - FIXME("(%p, %p): stub\n", This, pmtSeek); + FIXME("(%p, %p): semi-stub\n", This, seek_time); + *seek_time = 0; return S_OK; }
-static HRESULT WINAPI segment_state_GetStartPoint(IDirectMusicSegmentState8 *iface, MUSIC_TIME *pmtStart) +static HRESULT WINAPI segment_state_GetStartPoint(IDirectMusicSegmentState8 *iface, MUSIC_TIME *start_time) { struct segment_state *This = impl_from_IDirectMusicSegmentState8(iface); - FIXME("(%p, %p): stub\n", This, pmtStart); + + FIXME("(%p, %p): semi-stub\n", This, start_time); + + *start_time = 0; return S_OK; }
diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index ea5a972dc80..17fa951ae27 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -3985,12 +3985,12 @@ static void test_segment_state(void)
tmp_segment = (void *)0xdeadbeef; hr = IDirectMusicSegmentState_GetSegment(state, &tmp_segment); - todo_wine ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr); - todo_wine ok(tmp_segment == NULL, "got %p\n", tmp_segment); + ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr); + ok(tmp_segment == NULL, "got %p\n", tmp_segment); time = 0xdeadbeef; hr = IDirectMusicSegmentState_GetStartPoint(state, &time); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(time == 0, "got %#lx\n", time); + ok(time == 0, "got %#lx\n", time); time = 0xdeadbeef; hr = IDirectMusicSegmentState_GetRepeats(state, &value); ok(hr == S_OK, "got %#lx\n", hr); @@ -3998,11 +3998,11 @@ static void test_segment_state(void) time = 0xdeadbeef; hr = IDirectMusicSegmentState_GetStartTime(state, &time); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(time == -1, "got %#lx\n", time); + ok(time == -1, "got %#lx\n", time); time = 0xdeadbeef; hr = IDirectMusicSegmentState_GetSeek(state, &time); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(time == 0, "got %#lx\n", time); + ok(time == 0, "got %#lx\n", time);
/* PlaySegment returns a different, genuine segment state */
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/performance.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index bbc652fe225..72a979ba8ca 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -384,16 +384,15 @@ static HRESULT WINAPI performance_Init(IDirectMusicPerformance8 *iface, IDirectM return S_OK; }
-static HRESULT WINAPI performance_PlaySegment(IDirectMusicPerformance8 *iface, IDirectMusicSegment *pSegment, - DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState) +static HRESULT WINAPI performance_PlaySegment(IDirectMusicPerformance8 *iface, IDirectMusicSegment *segment, + DWORD segment_flags, INT64 start_time, IDirectMusicSegmentState **ret_state) { - struct performance *This = impl_from_IDirectMusicPerformance8(iface); + struct performance *This = impl_from_IDirectMusicPerformance8(iface);
- FIXME("(%p, %p, %ld, 0x%s, %p): stub\n", This, pSegment, dwFlags, - wine_dbgstr_longlong(i64StartTime), ppSegmentState); - if (ppSegmentState) - return create_dmsegmentstate(&IID_IDirectMusicSegmentState,(void**)ppSegmentState); - return S_OK; + TRACE("(%p, %p, %ld, %I64d, %p)\n", This, segment, segment_flags, start_time, ret_state); + + return IDirectMusicPerformance8_PlaySegmentEx(iface, (IUnknown *)segment, NULL, NULL, + segment_flags, start_time, ret_state, NULL, NULL); }
static HRESULT WINAPI performance_Stop(IDirectMusicPerformance8 *iface, IDirectMusicSegment *pSegment,
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=138172
Your paranoid android.
=== debian11 (32 bit report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit ar:MA report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit de report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit fr report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit he:IL report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit hi:IN report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit ja:JP report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11 (32 bit zh:CN report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004158c7).
=== debian11b (32 bit WoW report) ===
dmime: Unhandled exception: page fault on read access to 0x00000000 in wow64 32-bit code (0x004158c7).
=== debian11b (64 bit WoW report) ===
dmime: Unhandled exception: page fault on read access to 0x0000000000000000 in 64-bit code (0x00000000413888).