[erlang-bugs] Erlang on Windows NT4

Sebastian Egner s.egner@REDACTED
Thu Jul 17 15:21:32 CEST 2008


Hello,

Thank you for all the comments!

For what it's worth, I found out that the NT4 compatibility issue is not 
related to Erlang/OTP specifically, but rather an general byproduct of 
Microsoft terminating support for NT4 in Visual C++ 8:

    
http://forums.msdn.microsoft.com/en-US/vcgeneral/thread/2435c3ab-f732-467e-8224-5f4e3f12c10b/

    
http://www.mombu.com/microsoft/windows-programmer-win32/t-vs2005-and-nt4-392831.html

In short, when the system loads the VC8 runtime lib MSVCR80.DLL, it 
tries to resolve a reference to the function GetLongPathNameW in 
KERNEL32.DLL, which NT4 doesn't have. The beauty of it is that this 
reference seems to be the only reason for most VC8 application not to 
run on NT4! People have reported successfully running non-unicode  VC8 
applications by using custom-compiled versions of MSVCR80.DLL without 
the call to GetLongPathNameW.

This means, short of ERTS being ported back to VC 6.0, there is no hope 
of an 'official' version of ERTS supporting NT4, because Microsoft's 
licence will prevent Ericsson to include a patched runtime lib in the 
redistributable VC package. (Unless I am mistaken and there is a legal 
way of supporting NT with VC8.)

Experimentally trying out R12B-3 with a patched version of MSVCR80.DLL 
(<dirty mode="don't try this at home">Start emacs, load MSVCR80.DLL, 
replace "GetLongPathNameW" by "GetModuleHandleA" (= 16 chars and 
linkable), save.</dirty>), and creating a proper 'erl.ini' (which the 
installer could not do due to an acute lack of working VMs at the time), 
I am informed by the VM:

    C:\Program Files\erl5.6.3\erts-5.6.3\bin>erl
    Windows version not supported (min required: winnt 5.0)

So this clarifies the bug-report of my first email:

Yes, Erlang/OTP R12B-3 does check the OS version and refuses to run on 
NT4. However, the check is executed in an Erlang VM, which won't start 
in the first place, throwing an error message that takes an expert to 
interpret.

You could consider checking the OS version in the NSIS installer itself, 
e.g. using the function GetWindowsVersion:

    http://nsis.sourceforge.net/Get_Windows_version

and deactivate the check from the VM (erts\emulator\sys\win32\sys.c: 
check_supported_os_version()).

Kind regards,

Sebastian



More information about the erlang-bugs mailing list