Sch... Lotus Notes (npnotes.dll, WTF!?!)
-
Ich habe gerade ein lustiges Problem beim Programmieren (Debuggen genauergenommen).
Und zwar meldet Visual Studio ein Problem, wenn LogonUserW() aufgerufen wird:HEAP[VC8Test.exe]: Heap block at 001673A8 modified at 00167456 past requested size of a6 Windows has triggered a breakpoint in VC8Test.exe. This may be due to a corruption of the heap, and indicates a bug in VC8Test.exe or any of the DLLs it has loaded. The output window may have more diagnostic information
Der Callstack dazu sieht wie folgt aus:
> ntdll.dll!_DbgBreakPoint@0() ntdll.dll!_RtlpBreakPointHeap@4() + 0x28 bytes ntdll.dll!_RtlpCheckBusyBlockTail@4() + 0x76 bytes ntdll.dll!_RtlpValidateHeapEntry@12() + 0xa4 bytes ntdll.dll!_RtlDebugFreeHeap@12() + 0x97 bytes ntdll.dll!_RtlFreeHeapSlowly@12() + 0x31938 bytes ntdll.dll!_RtlFreeHeap@12() + 0xa28d bytes kernel32.dll!_LocalFree@4() + 0x2b bytes npnotes.dll!1000448d() [Frames below may be incorrect and/or missing, no symbols loaded for npnotes.dll] npnotes.dll!100049f4() ntdll.dll!_RtlFreeHeapSlowly@12() + 0x207 bytes ntdll.dll!_LdrpGetProcedureAddress@20() + 0x18c bytes ntdll.dll!_LdrGetProcedureAddress@16() + 0x18 bytes
Uh yeah baby, sch*** Notes!
Irgend ein Scherzkeks sorgt dafür, dass die "npnotes.dll" (C:\Program Files\IBM\Lotus\Notes\npnotes.dll) in meinen Prozess geladen wird (vermutlich alle Prozesse auf dem System).
Und die "npnotes.dll" fühlt sich dann dazu berufen irgendwelche Funktionen zu hooken, und baut dabei auch noch MistDabei läuft zu dem Zeitpunkt weder der Notes-Minder, noch Lotus Notes selbst. Beide Lotus Services die ich in der Liste sehe wurden auch bereits auf "disabled" gestellt (Lotus Notes Diagnostics, Lotus Notes Single Logon).
Die Parameter für LogonUserW() sind korrekt, daran liegt es also nicht. Wenn ich die "npnotes.dll" umbenenne, ist das Problem verschwunden.
Das selbe passiert übrigens mit Visual Studio 8 und 9, und in C++ sowie C# Programmen. LogonUserW() -> BOOM
Lustigerweise hatte ich das Problem bis vor wenigen Tagen nicht - am Source meines Programms hat sich aber nix geändert. Keine Ahnung was ich seit dem umgestellt habe, vermutlich ein paar Windows Updates installiert. Die "npnotes.dll" hat sich auch nicht verändert, sofern meine Systemplatte nicht putt ist, oder jmd. das File geändert hat ohne das Änderungsdatum anzupassen.
System = Windows XP SP3, alle Patches bis Heute (25.07.2011).
Notes = Release 8.5.1FP5 (FP5 hab' ich gerade installiert, um zu sehen ob das vielleicht was hilft)So. Zu den Fragen.
- Kann mir jmd. nen Tip geben, wie ich rausfinde, durch welchen Mechanismus die "npnotes.dll" geladen wird?
- Kennt jemand vielleicht das Problem, und weiss wie man es los wird?
- Weiss jemand was die verfi**** "npnotes.dll" überhaupt macht, wofür die gut ist?
ps.: der Source zu "VC8Test", falls es jmd. interessiert:
#define _WIN32_WINNT 0x0501 #include <windows.h> #pragma comment(lib, "advapi32") int main(int argc, char** argv) { HANDLE uh = 0; BOOL const rc = ::LogonUserW(L"user", L"", L"password", LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &uh); ::CloseHandle(uh); return 0; }
-
Ich bin mir nicht sicher, ob Dein Problem mit Notes zu tun hat.
-
Inwiefern ist dieser Hinweis nach 5 Monaten jetzt hilfreich und/oder sinnvoll?
BTW: das Problem ist längt behoben, aber frag mich nicht was jetzt schuld war. Ich hab das schon lange wieder vergessen.