[OpenAFS] iTunes Update breaks OpenAFS for Windows on 32-bit Windows

Jeffrey Altman jaltman@secure-endpoints.com
Wed, 10 Jun 2009 12:38:07 -0400

Please advise your help desk staff to be on the lookout for a sudden
increase in complaints about OpenAFS for Windows not working. 

The symptoms are that \\AFS is inaccessible and an examination of the
%windir%\temp\afsd_init.log file indicates a memory mapping failure when
attempting to load the AFSCache file.  This problem is likely to affect
any user of OpenAFS for Windows on 32-bit Windows with iTunes installed
that set their cache size to be larger than 500mb. 

The problem:

Apple updated the Bonjour distribution as part of the most recent iTunes
update.  Included in the distribution is a file called mdnsNSP.dll which
is inserted into the process memory space of every application on the
system that makes use of the WinSock APIs.  This DLL permits Bonjour
discovery services to be used as a DNS replacement automatically.  Apple
set an image base of (16080000 to 160A4FFF) which is smack in the middle
of the 32-bit process data range instead of using a value around
60000000 as recommended by Microsoft.

The work around:

The Microsoft SDK provides a tool called rebase.exe which is used by
developers to modify the base address of a DLL.  The following
operations can be used to move mdnsNSP.dll to the correct location in

    1. cd to c:\program files\bonjour
    2. rename mdnsNSP.dll to mdnsNSP.dll.inuse
    3. copy mdnsNSP.dll.inuse to mdnsNSP.dll
    4. rebase -d -b 0x60000000 mdnsNSP.dll

The next time the OpenAFS for Windows service is started the dll will be
loaded into the correct range in memory. 

Unfortunately, it is likely that the next iTunes update will break this
again.  End users are also unlikely to have access to the rebase.exe

The command "dumpbin /headers mdnsNSP.dll" can be used to determine the
image base.

The affected version of mdnsNSP.dll is

Jeffrey Altman