View previous topic :: View next topic |
Author |
Message |
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Thu Dec 19, 2019 5:02 pm Post subject: Silverfrost exception handler has failed |
|
|
I have a working 64 bit program but when I try to distribute it to another computer, I get the above message. The original computer has FTN95 installed as it is my development computer, the second does not.
Development computer is Windows 10 Home 64 bit 8GB
Target computer is Windows 7 Enterprise 64 bit 8GB
I have copied every .dll and .lib I can see to the target computer.
Regards
Ian |
|
Back to top |
|
|
JohnCampbell
Joined: 16 Feb 2006 Posts: 2554 Location: Sydney
|
Posted: Fri Dec 20, 2019 10:03 am Post subject: |
|
|
Ian,
Can you overcome the problem by relinking on the Win 7 computer, by using the generated .obj's, while the .dll's are found in the appropriate path for the win 7 environment ?
I am suspecting the system .dll's may not be backwards compatible.
Your text does not explain the subject; exception handling problem ?
John |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Fri Dec 20, 2019 10:42 am Post subject: |
|
|
Ian
This failure message is provided by salflibc64.dll when an exception is raised and the traceback mechanism fails.
It could for example be a response to a failed call the the API function SymInitialize that is used to initialise a traceback.
If, as John suggests, there is a problem with OS versions then, when that problem is resolved, you might then get a traceback that points you to the failure that raised the exception.
Alternatively you could get the user to send their data so that you can reproduce the root problem on your machine. |
|
Back to top |
|
|
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Fri Dec 20, 2019 3:46 pm Post subject: |
|
|
Thanks for your suggestions.
It is compiled for X64 - Debug.
I have routine to trap exceptions and this particular on is an Access Violation.
I do not have administrator rights over the target computer and therefore, I cannot link sucessfully on that computer. I can do it but an error is displayed:
***Unable to find the DLL clearwin64.dll on the system path
I can't perform a proper installation of FTN95/Plato on the target computer due to the same lack of administrative rights.
I have re linked it on my old Windows 7 64-bit computer and when I transfer the executable to the target computer it still fails. There are three pop-up windows announcing "Silverfrost exception handler has failed". This same executable functions correctly on my Windows 10 computer.
Next, I removed the accessviolation handler initiation line from the code and re-compiled and linked on the target computer. Still not possible to link due to missing .dll. So I copied the dll into the directory containing the source code and re-linked - success - at linking, but the "Silverfrost exception handler has failed" message still persists. It is now reduced to two notifications.
Removing all the exception trap handlers produces the same double notification. Even compiling it release mode produces the same errors.
Ian |
|
Back to top |
|
|
DietmarSiepmann
Joined: 03 Jun 2013 Posts: 279
|
Posted: Fri Dec 20, 2019 6:38 pm Post subject: |
|
|
Ian,
as you do not have administrator rights on the target computer and as you cannot install ftn95 on the target computer I would ty to add a write statement at the beginnig of your code, compile it on your development computer and then distribute it on your target machine again.
May you start the executable on the target computer from within a CMD-Window? If yes then you may try the following on the target computer:
start a cmd window
change the PATH within this cmd window to make the directory where dll clearwin64.dll is located be part of the PATH
start your application from within this cmd window
If e.g. c:\user\salford_dlls is the location directory of clearwin64.dll you may type
Code: |
set PATH=c:\user\salford_dlls;%PATH%
|
to change the PATH as appropriate. Now the application should find dll clearwin64.dll and hopefully the write statement you added will be displayed.
Morover you could try if a small 32 bit application built with SALFORDs ftn95 on your development machine runs on the target computer.
Somtimes I ran into problems if on the target computer there was more than one dircetory where SALFORD dlls (cleawin64.dll, salflibc64.dll, salflibc.dll) were located.
In this case you need to ensure that your application makes use of the same versions of clearwin64.dll, salflibc64.dll as have been used on your development computer in the build procedure of your application. You could do this by means of adapting the PATH variable as described above.
I hope this help.
Regards,
Dietmar |
|
Back to top |
|
|
JohnCampbell
Joined: 16 Feb 2006 Posts: 2554 Location: Sydney
|
Posted: Sat Dec 21, 2019 12:27 pm Post subject: |
|
|
Ian,
I agree with Dietmar in his assessment that the required .dll's might not be in the defined path. If you don't have administer rights, you don't have to install FTN95 in C:\Program Files (x86)\Silverfrost\ftn95 but could install in any local directory where you do have rights, as he has suggested.
Then in your cmd.exe box, you must redefine the path to include this directory and all FTN95 related environment variables. You can redefine any environment variables locally in the cmd.exe box.
Note that plato may not work if not started in the cmd.exe box. You cant use the shortcuts from explorer or desktop.
Other compilers have this approach. You can work around the restricted rights by using an open directory, even c:\temp could be used !
You need to confirm if you can create this local FTN95 directory, add it to the local path then build a .exe and confirm it runs.
If this works you could be able to run your original .exe in this cmd.exe box.
Please let us know how you go, as Win 7 should be more friendly with restricted directories.
John |
|
Back to top |
|
|
|