I Receive Error 114 When I Start Up Elliott on the Server
A: Most likely your system is impacted by DEP (Data Execution Prevention) if you start Elliott and immediately see the above message. Depending on the version of Elliott you are running, you may receive this error for EL700.EXE, EL800.EXE, EL850CC.EXE or other related Elliott executable programs. Following sample screen is an example of error 114 when you tried to start up Elliott 8.5:
It is ironic that, after decades of trying to improve how quickly and efficiently CPUs can run code, the newest, most fashionable processor feature is the ability to not run code. A new hardware feature has started to show up to prevent code execution called “execute disable” (XD) by Intel or “no execution” (NX) by AMD. Microsoft calls it Data Execution Protection (DEP) and it is implemented in Windows 2003 Server SP1 and Windows XP SP2.
Basically, the DEP feature uses processor hardware to discourage the kind of virus, worm, and Trojan Horse attacks that look for buffer overrun errors in the operating system. Working with memory protection technology built into new CPUs with this hardware feature, Microsoft toughens the distinction between program and data areas in system memory – in other words, it stops any attempt to insert and execute code from memory locations set aside for data.
Many legitimate programs that perform just-in-time code generation execute instructions within data areas, and they will be effected by this DEP feature. Elliott is in the same situation. Netcellent is committed to rewrite Elliott and come up with a new version in the future to work with DEP. In the meantime, Microsoft offers a new Control Panel dialog box for users to switch the DEP feature on and off for the entire system, or off for individual applications (like Elliott’s EXE).
Error 114 means “Attempt to access item beyond bounds of memory,” which is raised by the Microsoft DEP feature. This type of problem typically happens when you execute Elliott on the server (i.e., Terminal Server/Remote Desktop) because the newer server's CPU most likely comes equipped with DEP checking capability.
To resolve this problem, you need to add all Elliott EXE files to the DEP exception list. You can access that list by going to the Windows right click on "My Computer", "Computer" or "This PC" and choose "Properties". Then choose "Advanced System Settings". Click on "Settings" button under "Performance". Then go to "Data Execution Prevention" tab. See sample screen below:
Depending on your operating system, typically you can access this screen by right clicking "My Computer" or "Computer" and choosing "Properties." Select the "Advanced Tab" and click on the "Settings" button under the "Performance" area. Once you see the "Perform Options" dialog box, click on the "Data Execution Prevention" tab to access the exception list.
One easy way to solve this DEP problem is to select the radio button "Turn on DEP for essential Windows programs and services only." This will cause Windows to exempt all application programs (including Elliott) from the DEP check. You will have to reboot Windows once you make this choice.
If you would like tighter security, then you may want to choose "Turn on DEP for all programs and services except those I select:"
EXE Files for Elliott V7
For Elliott 7.x, you will add all EL700*.EXE in the <ElliottRoot> folder, where <ElliottRoot> is your Elliott start-up folder (e.g. M:\Elliott7.) More specifically, you will add the following EXE:
- EL700.EXE - Elliott V7 Main EXE
- EL700CF.EXE - Elliott V7 Configuration Utility
- EL700DP.EXE - Elliott V7 Defer Process
- EL700EV.EXE - Elliott V7 Event Processor
- EL700GE.EXE - Elliott V7 Contact Manager
- EL700ME.EXE - Elliott V7 Mass Email & Export Processor
- EL700RP.EXE - Elliott V7 Defer Processing Reporting Task EXE
- EL700TK.EXE - Elliott V7 Tickler
- EL700US.EXE - Elliott V7 User Count Control
For Elliott 8.x, you will add all EL800*.EXE in the <ElliottRoot>\Bin folder. More specifically, you will add the following EXE:
- DDF2BTR.EXE - Elliott V8 Re-Index Utility
- EL800.EXE - Elliott V8 Main EXE
- EL800CF.EXE - Elliott V8 Configuration Utility
- EL800DP.EXE - Elliott V8 Defer Process
- EL800EV.EXE - Elliott V8 Event Processor
- EL800GE.EXE - Elliott V8 Contact Manager
- EL800ME.EXE - Elliott V8 Mass Email and Export Processor
- EL800P.EXE - Elliott V8 Individual Task Processor or Legacy Menu Interface
- EL800RP.EXE - Elliott V8 Defer Processing Reporting Task EXE
- EL800TK.EXE - Elliott V8 Ticker
- EL800US.EXE - Elliott V8 User Count Control
EXE Files for Elliott V8.5
For Elliott 8.x, you will add all EL800*.EXE in the <ElliottRoot>\Bin85 folder. More specifically, you will add the following EXE:
The following is a typical list in DEP exception list for Elliott V7 users.- DDF2BTR.EXE - Elliott V8.5 Re-Index Utility
- EL850CC.EXE - Elliott V8.5 Main EXE
- EL850DP.EXE - Elliott V8.5 Defer Process
- EL850EV.EXE - Elliott V8.5 Event Processor
- EL850GE.EXE - Elliott V8.5 Contact Manager
- EL850ME.EXE - Elliott V8.5 Mass Email and Export Processor
- EL850P.EXE - Elliott V8.5 Individual Task Processor or Legacy Menu Interface
- EL850RP.EXE - Elliott V8.5 Defer Processing Reporting Task EXE
- EL850TK.EXE - Elliott V8.5 Ticker
- EL850US.EXE - Elliott V8.5 User Count Control
Use Mapped Drive Path
Keep in mind that when you add Elliott EXE to this list, it is extremely important to match the path, even though the path is not displayed. For example, if you run Elliott on the server from mapped drive M:\Elliott7, then you should add to the DEP exception list through the same mapped drive location. Even though it's located on the server, a local drive like D:\Acct\Elliott7 or a UNC path may refer to the same location and EXE. You should not use that alternative path. In a sense, it's misleading that Microsoft's DEP does not display the path in the exception list. Matching the path with the executing EXE exactly is very important to address your DEP problem.
What If You Can't Use Mapped Drive Path
In some exception situations, we have noticed Windows DEP user interface do not allow users to select the EL700*.EXE file from mapped drive. To by pass this limitation, please read the following knowledgebase article: http://support.elliott.com/knowledgebase/articles/531028-manage-data-execution-prevention-dep-through-reg
If You Are Running on Windows Server 2016
If you run Elliott directly on Windows Server 2016, above method won't work due to DEP exception list does not support mapped network drive. This is the case even if you try to define the exception list of mapped network drive path through registry. Therefore, in the case of Windows Server 2016, you will need to choose "Turn on DEP for essential Windows programs and services only". This change will require rebooting the server before the configuration can take effect.If you are running Elliott 8.5, then you have the following additional options:
- Use Run Local Mode feature. This is workable if you intend to run Elliott V8.5 on the server for administrator or deferred processing only. If the server is intended to be a terminal server, it would be tedious to define the DEP list for each desktop user since their Run Local paths are all different.
- Use Run Hybrid Mode feature. This is like Run Local, but all users on the server share the same local copy of Elliott. Therefore, you only need to define the DEP list one time. This is the best choice if this is a terminal server.
EMK