This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Express 3.2.7.0 will not install on Win7 32bit : legacyio.dll won't load

Ever since Express went from 3.1.9.0 to 3.2.x.x I have been unable to update.

This was OK for a while - I was happy to stick to 3.1.9.0 but now I am forced to update when I open Express. The update fails and I'm stuck.

I have raised this issue before and been asked for logs files which I've now been informed will not be passed to development.

The log files show:

--------- [ Thread 1 ] ----------------+-------+------+---+--->
2014-06-12 07:22:40.740984 (UTC+01:00) | 2360 | 1 | I | Program.Main() {
2014-06-12 07:22:41.244890 (UTC+01:00) | 2360 | 1 | I | Program.Run() {
2014-06-12 07:22:43.465593 (UTC+01:00) | 2360 | 1 | E | Program.CurrentDomain_UnhandledException() {
2014-06-12 07:22:43.466570 (UTC+01:00) | 2360 | 1 | E | Uncaught exception. IsTerminating=True
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E | System.IO.FileLoadException: Could not load file or assembly 'legacyio.dll' or one of its dependencies. Exception from HRESULT: 0xC000001D
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E | File name: 'legacyio.dll'
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E | at Garmin.Cartography.MapUpdate.CoreService.Program.L oad()
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E | at Garmin.Cartography.MapUpdate.CoreService.Program.R un()
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E | at Garmin.Cartography.MapUpdate.CoreService.Program.M ain()
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E |
2014-06-12 07:22:43.616960 (UTC+01:00) | 2360 | 1 | E |

The file "legacyio.dll" was not present in the 3.1.9.0 installation so I assume that it's new to 3.2.x.x and depends on some other component that the installer isn't providing.

I have tried the .NET repair tool, I have tried (and ignored) the Windows Installer suggestion (which doesn't apply to Win7) and I have tried the suggestion to install Visual Studio Express and install the update service that way.

Nothing works.

Would it be possible for anyone to confirm that they have installed on Win7 32bit or that Garmin have tested on that platform?

This thread is essentially a continuation of https://forums.garmin.com/showthread.php?90175-Outstanding-issues-with-3-2-4

Thanks in advance.
  • Hi I have the same problem now. Bought a Garmin Device and can't install Garmin Express. Got the same error message. What CPU do you have in your PC?

    BTW:
    Installation of version 3.1.9 was possible on my PC. But after starting 3.1.9 the program is updating itself to the lastest version and after that I got the same error.
  • AMD Athlon XP2800 - can't see that being relevant but you never know :)
  • Well, this is the problem as far as I asume. I have an AMD Athlon XP 3200+ and the same error.
    HRESULT: 0xC000001D
    The file "legacyio.dll" is there and all it's dependencies.
    The illegal instruction error is not comming from a missing file, but from missing functions in the CPU.
    I assume, and I am almost sure, the program or a just a DLL, now needs SSE2 and our CPU does not have SSE2. Only SSE.

    Maybe other users with the same problem can check if they have a CPU without SSE2.
  • Hey Beejay - that sounds like an interesting theory and might explain why there's a relatively small number of people having the issue.

    Hopefully customer support will chip in now that there's 2 of us with exactly the same issue.
  • I have written some test programs today. Looks like the DLL 'XercesLib.DLL' is the problem.
    The DLL is not from Garmin, it's from Apache Software Foundation. A DLL for Xcerces C++.

    I found on their homepage
    http://xerces.apache.org/xerces-c/
    that since version 3.1.0 it uses SSE2 instructions to improve XML Schema validation performance.

    Germin Updater Service comes with version 3.1.1, so the DLL needs a CPU with SSE2 support.
    Unfortenatly our old CPU does not support SSE2, the old Pentium 4 as example does.

    Version 3.0.0 does not use SSE2 instructions. So maybe there is a chance, that the Garmin Updater Service will run with version 3.0.0

    If not, we need a 3.1.1 which has been compiled without the use of SSE2 instructions.
    Normaly this is only a compiler setting. It's not neccessairy to change the source code of the DLL.

    BTW:
    the source code for Xcerces is available. Maybe another user here has a C compiler and is willing to compile it for us without SSE2.

    -----------------

    Tested with an older version 3.0.1 and it did NOT work.

    So we need a new "legacyio.dll" and "XMLdll.dll" compiled for "XercesLib.dll" 3.0.1 or a "XercesLib.dll" without SSE2.
  • I've been asked for logs to send to development via a personal message on here.

    I went through this loop before - sent logs and was roundly ignored from there. When I asked (via email) what had happened to the logs I was told that they never send logs to development. So I'm not bothering.

    Frankly Garmin need to solve this - your detective work has been exactly what I expected Garmin devs to do as a result of getting my original logs i.e. create a test program for me to run to identify exactly where in the chain legacyio.dll was failing to load. For them this would have been 20 minutes work.
  • Yes, it's definitively much easier for them to find the error, because they have the source code. But if you are not motivated...

    On 64-Bit Systems, many DLL's use SSE2 instructions. But this causes no problems because all 64-Bit CPU's supports SSE2.

    BTW:
    I opend a new thread for that problem.