cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mpa109
Level 5

MS VC++ Abnormal Program Termination while upgrading IS2010 InstallScript Project

I have InstallShield 2011 with Hotfix A installed. I am trying to convert an IS2010 InstallScript to IS2011. This same project originated in IS 12, converted to IS 2008, to IS 2009 and now in IS 2010, all without any problems.

I open up IS2011, select the IS2010 project and I am told to convert it, so I do.

Alternatively, I get different errors:

"MS VC++ 'Abnormal program termination'"

or

"InstallShield needs to close. An error has occurred that InstallShield could not recover from. We have created an error report...blah blah blah"

I've clicked the link to "view the technical details of this error" and that does nothing. I also clicked the "Report" button, and that appeared to do nothing as well.

I have been able to upgrade other projects from IS2010, just not this particular project.

Any thoughts? Any more info I can provide?
Labels (1)
0 Kudos
(13) Replies
mpa109
Level 5

Sorry, forgot to add that the project file (.ISM) appears to have been converted, but I get the same errors when I try to open the converted project, too.

The strange thing is that I can run ISCmdBld against the converted project, and I get no errors compiling.

(It would be nice to do some actual developing, though).
0 Kudos
mpa109
Level 5

For what it's worth, if I get a "nicer" message (along the lines of "InstallShield could not open and will shut down"), an iside.log file is created in the InstallShield\2011 directory with a few lines that say:

C:\CodeBases\isdev\src\FrontEnd\Views\IsWsInstallScripts\ScriptEditorWnd.cpp 1359: Out of memory.

Any thoughts?
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Is there any way you can provide us with the files (.ism, *.rul) for this project?
0 Kudos
mpa109
Level 5

Sorry for the delay. Actually, support ticket #SIOC-000111065 has been opened, and working on it with a rep.

One thing, our project has ~300 RUL files in it. Any possibility the "out of memory" problem has anything to do with that number of RULs? This was obviously not an issue in IS2010, just a thought...
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

The InstallScript editor was changed for IS 2011. However, even with 300 script files, unless they are significantly large in size each, it is unlikely that the heap for our process would be exhausted.

Can you try to isolate this behavior by removing rul files in a binary search method? This could help to determine if a specific rul file contains something that is causing the problem or if the combination of all the rul files could be the issue.
0 Kudos
mpa109
Level 5

Got this back from support, which I'm following up on (I can be kind of dense, so I need a few more details...)

"This Issue seems to be a conversion Problem itlself.
I used notepad to methodically remove rows from tables, saving after each table modification and then attempting to open in InstallShield.
In your project, you have PATH_TO_INCLUDE_FILES in the ISScriptFiles table. If you use notepad to change the PATH_TO_INCLUDE syntax in the ISScriptFile table to ISProductFolder, then InstallShield 2011 can open the project."
0 Kudos
mpa109
Level 5

So, here's what I have done, and successfully opened and used IS2011 with my previously working IS2010 project that has been upgraded through each version of IS since IS12 without any of these problems:

FAILURE:
1. Open the IS2010 ISM file in notepad and remove all RUL files from ISScriptFile except setup.rul and support.h
2. Launch IS2011 and convert the edited ISM file in step 1, SUCCESS
3. Manually add the RUL files I removed in step 1 using the IDE
4. IS2011 crashes around the time I add the 260th RUL file

SUCCESS:
1. Open the IS2010 ISM file in notepad and remove all RUL files from ISScriptFile except setup.rul and support.h
2. Launch IS2011 and convert the edited ISM file in step 1, SUCCESS
3. Merge individual RUL files into "master" RUL files (i.e., combine 20 original RUL files into one RUL file, resulting in 15 larger RUL files)
4. Manually add the 15 larger RUL files, SUCCESS

So, looks like it's a file number limitation of some sort (imo). None of the original RUL files were larger than 100Kb. The largest merged RUL file is 700Kb.

I'm guessing I found my own workaround, which is kind of annoying, as we intended on developing on a "one RUL per function" basis. If anyone has any thoughts, I'd like to hear them.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

It is unlikely that the memory available to the InstallShield process has been exhausted by the number of rul files in a project (unless they consume ~1GB or more of memory). At this point, it would be helpful to determine if a specific file (or set of files) is causing the behavior or if it is just the overall set of files.

If possible, we would recommend using a binary search approach to isolating this behavior by removing sets of files at a time (remove half, if the behavior goes away, remove the other half, etc. until a file or set of files is isolated). This provides a relatively quick method of isolating what specifically might be causing the behavior.

While having ~300 rul files isn't a typical use case we see, the IDE should not encounter any issues in such a scenario. If this behavior can be isolated this would be helpful in determining why the behavior is occurring and what solutions are available.
0 Kudos
mpa109
Level 5

Tried the binary search. Edited the ISM in notepad, removing half of the RUL files. Launched the converter, project converted and opened without any problems (although, no IS on the task bar until I alt-tabbed to it). Closed out, deleted ISM file, re-opened the original in notepad, removed the other half of the RUL files. Launched the converter, project converted and opened without any problems (aside from same no IS on task bar).

Doesn't appear to be a problem with a specific RUL file.

Also did this test, which should be in the support ticket:

If I open up my IS2010 ISM in notepad and remove all scripts from ISScriptFile except setup.rul and support.h, then do a conversion, InstallShield does not crash, and I have a viable IS2011 ISM file. If I open that ISM in IS2011 and start manually re-adding back all of my RUL files, InstallShield will eventually crash with the same error - first time, if I add 20 at a time, when I get around the 200th RUL file; second time, since I had the ISM saved after each group of 20, when I started adding one at a time, it crashed again around the 260th RUL file.

I retested, adding the files 15 at a time, this time adding alphabetically backwards (so last RULs added first), again crashed around the 200th file group (so, a different group of RULs added, but crashing around the same number). Didn't try the manually adding one at a time after that, seemed unnecessary.

Like I noted, it seems if I merge groups of RULs into "master" RUL files, I can get around this issue, just not ideal for us (but, if that's what I have to do, that's what I have to do, right?).
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Is there any way you can send your project to us? It would be helpful to see if we can reproduce the crash with a debug build of the product and track down where it might be encountering an issue with these rul files.
0 Kudos
mpa109
Level 5

A support ticket has already been opened (#SIOC-000111065), and they have my ISM file (both the IS2010 and converted IS2011 files).

If you could add some insight to those working on it, that would be great, as none of the suggestions have been fruitful there.

Thanks!
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

It appears that only the ISM file for this project was provided for the support incident. The ISM itself migrates and opens successfully on a number of machines here with IS 2011 installed.

Can you provide the RUL files for this project? Without these files, the only thing the InstallScript view will do is enumerate the script files linked to the project and attempt to open them. Since none of them are present, not much work will be done (other than adding a tree entry for each file) and no files will be parsed (which would allocate a number of objects per-file to track various information used by the editor for code completion). As a point of reference, the line of code you had previously mentioned (C:\CodeBases\isdev\src\FrontEnd\Views\IsWsInstallScripts\ScriptEditorWnd.cpp 1359) is part of a function that works with the files in the script view and is responsible for updating the line and column number of the cursor position in the status bar, resetting read-only attributes on RUL files if requested, and updating the function list in the view. None of these particular operations will do anything if there isn't a file open in the editor since there is no data to work with.
0 Kudos
mpa109
Level 5

Due to our policy regarding source code, I can not easily provide our RUL files, and attempts to recreate with dummy RULs have been unsuccessful.

So, we're going ahead with our workaround of merging the files and going from there.

Thanks for your attention in this matter.
0 Kudos