{]Background:{]A user reported that his Notes Client was crashing and writing out NSD logs
whenever he tried to create or respond to a memo. We discovered the crashes
also occurred when creating calendar entries and new contacts (though only when
tabbing to a rich text field in the contact form). The latter symptom suggested
the fault was not caused by a corrupt mail database (plus we were able to
create memos in his mail database without crashes). We tried deleting and
recreating cache.ndk, desktop6.ndk and bookmark.nsf, but the crashes still
occurred.
We resorted to analysing the NSD log to see if we could find the source of the
error, be it a corrupt database, document, dll or process. NSD logs are not
well documented - in the technical forum IBM Lotus advise users to forward the
logs to IBM Support for analysis. However, in this case, we were able to
identify the cause of the crashes from the NSD logs and fix the problem, a
corrupt printer driver.
{]Overview:{]
The following steps helped identify and fix the cause of the Notes Client
crashes:
{]Step 1:{] A search of the Notes Technical Forum returned a topic that
recommended looking in the NSD log for topmost process under the FATAL THREAD
sections, tagged thus [ 1]. In the user’s NSD log this process was
“ntdll.RtlAllocateHeap”:
############################################################
FATAL THREAD 1/8 [ nlnotes:01d8: 1324]
FP=0x0012e138, PC=0x77fcb21d, SP=0x0012df6c, stksize=460
EAX=0x00000000, EBX=0x00000032, ECX=0x061c20a0, EDX=0x00000008
ESI=0x061c1e40, EDI=0x061c1f10, CS=0x0000001b, SS=0x00000023
DS=0x00000023, ES=0x00000023, FS=0x0000003b, GS=0x00000000 Flags=0x00010246
Exception code: c0000005 (ACCESS_VIOLATION)
############################################################
[ 1] 0x77fcb21d ntdll.RtlAllocateHeap+1331 (61c0000,1,c8,12ed5c)
[ 2] 0x05c3bed5 LMAAG2DA (151aa4,61c1818,12ed5c,0)
[ 3] 0x05c22c9c LMAAG2DA.DrvConvertDevMode+256 (0,12ed5c,0,54d7fd8)
[ 4] 0x7780564d WINSPOOL.DocumentPropertySheets+97 (0,151aa4,5460758,54d7fd8)
[ 5] 0x77f4c353 GDI32.GetCharWidthA+572 (4d4,12ee08,5460758,4d4)
[ 6] 0x77f4e463 GDI32.GetRasterizerCaps+261 (12f264,12ee60,12f164,0)
[ 7] 0x77f4e4be GDI32.CreateICA+23 (12f530,130,1729b68,77e339ab)
@[ 8] 0x612267c3 nnotesws._FontTableSetup@4+1123 (1,130,1729b68,611d346c)
@[ 9] 0x611d2feb nnotesws.CNEMTbFont::Init+11 (3025c,12f7c0,12f7c8,c0000000)
@[10] 0x6119b7a6 nnotesws._ToolbarFontTypeComboProc@16+310 (3025c,844,1,0)
[11] 0x77e4158f USER32.GetTopWindow+18364 (6119b670,3025c,844,1)
[12] 0x77e41dc9 USER32.GetWindowLongW+1641 (12f7c0,0,611960d3,12f7c0)
[13] 0x77e41e7e USER32.DispatchMessageW+11 (401000,0,133eaf,0)
@[14] 0x0040156d nlnotes._WinMain@16+1389 (400000,0,133eaf,1)
@[15] 0x00401dfa nlnotes._WinMainCRTStartup+308 (0,0,7ffdf000,0)
[16] 0x7c598989 KERNEL32.ProcessIdToSessionId+381 (401cc6,0,c8,100)
############################################################
PASS 2 : FATAL THREAD with STACK FRAMES 1/8 [ nlnotes:01d8: 1324]
FP=0012e138, PC=77fcb21d, SP=0012df6c, stksize=460
Exception code: c0000005 (ACCESS_VIOLATION)
############################################################
---------- Top of the Stack ----------
# 0012df6c 77fcacea 000000c8 061c0650 00000002 |...w....P.......|
# 0012df7c 00000000 0012e098 00000000 00000000 |................|
# 0012df8c 00000000 00000000 00000000 00000000 |................|
# 0012df9c 00000000 00000000 00000000 00000000 |................|
# 0012dfac 0012dce8 0012e0c8 00000000 00000000 |................|
# 0012dfbc 00000000 00090000 13600001 12401b66 |..........`.f.@.|
# 0012dfcc 008e1a00 00000000 00130178 05460c38 |........x...8.F.|
# 0012dfdc 00000000 0020b330 008e1a60 0012e018 |....0. .`.......|
# 0012dfec 0546c318 77fb2c8a 00130000 0546c310 |..F..,.w......F.|
# 0012dffc 0546c318 0012dff4 00130688 0012e0ac |..F.............|
# 0012e00c 77fb7e64 77f83158 ffffffff 0012e0bc |d~.wX1.w........|
# 0012e01c 77fcb7c2 00130778 0546c318 0012e1bc |...wx.....F.....|
# 0012e02c 0012e1b8 0546c318 0012e0f8 77805443 |......F.....CT.w|
# 0012e03c 77801a28 778020c0 0012e04c 77804357 |(..w. .wL...WC.w|
# 0012e04c 77819280 0012e0b2 77805482 00000000 |...w.....T.w....|
# 0012e05c 77805406 00000009 00000010 061c0338 |.T.w........8...|
# 0012e06c 061c0338 0012e0fc 00000000 00000000 |8...............|
# 0012e07c 00720050 006e0069 00130000 00000005 |P.r.i.n.........|
# 0012e08c 00430000 00700061 005f0073 0054004e |..C.a.p.s._.N.T.|
# 0012e09c 00450001 0046004d 0012e028 0012f758 |..E.M.F.(...X...|
# 0012e0ac 0012e0f4 77fb7e64 77f81678 ffffffff |....d~.wx..w....|
# 0012e0bc 0012e104 7c5792fb 00130000 00000000 |......W|........|
# 0012e0cc 0546c318 0012e1bc 0012e1b8 00000000 |..F.............|
# 0012e0dc 061c0000 00000032 00000000 061c1e40 |....2.......@...|
# 0012e0ec 061c0160 0012f700 0000001a 7c5c1f54 |`...........T.\||
# 0012e0fc 7c572400 01000000 061c1f10 061c20a0 |.$W|......... ..|
# 0012e10c 061c0338 061c1e40 00000000 000000d0 |8...@...........|
# 0012e11c 00000000 0012f758 0012dbb8 0012f758 |....X.......X...|
# 0012e12c 77fb7e64 77f81650 00000000 0012e1d8 |d~.wP..w........|
[ 1] 0x77fcb21d ntdll.RtlAllocateHeap+1331 (61c0000,1,c8,12ed5c)
# 0012e138 0012e1d8 05c3bed5 061c0000 00000001 |................|
# 0012e148 000000c8 0012ed5c 0012ed5c ffffffff |....\...\.......|
# 0012e158 6d78654c 206b7261 32333654 061b0000 |Lexmark T632....|
# 0012e168 00000002 00000000 00000000 00000000 |................|
# 0012e178 3158454c 00313000 454c0031 00003158 |LEX1.01.1.LEX1..|
# 0012e188 00000000 00000000 00000000 00000000 |................|
# 0012e198 00000001 0000ceb0 00000000 00000000 |................|
# 0012e1a8 00000000 00000000 00000000 00000000 |................|
# 0012e1b8 00000003 00000020 061c1818 0000000f |.... ...........|
# 0012e1c8 061c0bc0 00000708 061c0000 005c88e0 |..............\.|
[ 2] 0x05c3bed5 LMAAG2DA (151aa4,61c1818,12ed5c,0)
# . . .
{]Step 2:{] The Notes forum returned no results on a search for
“RtlAllocateHeap”. However, a search on Google for "ntdll.RtlAllocateHeap IBM
Lotus" returned the following IBM Technote
(http://www-1.ibm.com/support/docview.wss?uid=swg21148472):
Notes Client Crashes on ntdll… When Edit, Forward, or Reply to a Memo or
Other Document
Problem
Your Notes Client crashes on ntdll.RtlAllocateHeap when you respond, forward,
or edit a mail message or other document. The key element of the stack is the
top entry:
ntdll.RtlAllocateHeap
Note: On some operating systems the above may simply appear as ntdll.
Typically the below entries appear elsewhere in the stack:
KERNEL32.LocalAlloc
WINSPOOL.DocumentPropertySheets
As well as the following grouping:
GDI32.CreateICA
nnotesws._FontTableSetup
nnotesws.CNEMTbFont::Init
nnotesws._ToolbarFontTypeComboProc
Solution
This issue has been reported to Lotus software Quality Engineering. The issue
is currently attributed to a conflict with the fonts downloaded to the system
relative to the default printer selection made in the operating system. The
issue may be related to cases in which a PCL family driver is being used; in
one case, a customer experiencing this crash was using a PCL5 driver.
Workaround: Try setting the default printer for the operating system to a
printer that does not use a PCL family driver. If this resolves the crash, then
attempt to use a later driver for the printer.
To determine which print driver is the default:
From the OS select Start → Settings → Control Panel → Printers. The default
print driver will have a check mark above it.
To set a different print driver as the default:
Right-click on the print driver and select “Set as default driver”.
To determine the driver version and drivers used by the print:
Right-click on the print driver, select Properties, and then click the button
“Print test page”. The output will contain a line “Driver version”. The output
will also contain information relative to the driver files used by the printer;
look for a driver file that starts with PCL. Note the filename and the
additional driver release information that appears after the filename.
Supporting Information:
An example of the complete Fatal Thread section of the crash stack:
ntdll.RtlAllocateHeap+637 (130000,140008,6b4,6b4)
KERNEL32.LocalAlloc+110 (40,6b4,0,12ed58)
WINSPOOL.SpoolerInit+742 (12ed58,0,210c10,a)
WINSPOOL.DocumentPropertySheets+109 (0,13e0b4,72131b0,210c10)
GDI32.EnumFontFamiliesExW+1104 (12ee10,12ee08,0,0)
GDI32.EnumFontFamiliesExW+1296 (12f264,12ee60,12f164,0)
GDI32.CreateICA+23 (12f530,132,1799368,77e1b1ca)
nnotesws._FontTableSetup@4+1123 (1,132,1799368,611d346c)
nnotesws.CNEMTbFont::Init+11 (102da,12f7c0,12f7c8,c0000000)
nnotesws._ToolbarFontTypeComboProc@16+310 (102da,844,1,0)
USER32.DispatchMessageW+38 (6119b670,102da,844,1)
USER32.GetAppCompatFlags2+1365 (12f7c0,0,611960d3,12f7c0)
USER32.DispatchMessageW+11 (401000,2,13427c,0)
NLNOTES._WinMain@16+1389 (400000,0,13427c,1)
NLNOTES._WinMainCRTStartup+308 (2,12f188,7ffdf000,77ee2680)
KERNEL32.CreateProcessW+5542 (401cc6,0,c8,100)
{]Step 3:{] While not an identical match, many entries in the example
Fatal Thread section also occurred in the user’s NSD log, particularly those
related to “Font”. From the NSD log we identified that the default printer was
a Lexmark T632. We updated the printer drivers and this resolved the problem
{]Note:{] There are other forum posts related to problems with printer
drivers resulting in Notes Client crashes.
Thanks to the forum contributors who helped me deduce the solution to my problem. Hopefully this post will help someone else with a similar problem.
Regards,
Robert Fairhead
robertf@rocher.com.au