Bug Report: Vensim Crash on Viewing "Table" for Large Get Direct Lookups Variable
Posted: Mon Jun 21, 2021 12:57 am
Hello Ventana team,
We've run into a situation that crashes Vensim with 100% reproducibility. This is on Windows 10. Here are the steps to reproduce the crash:
1. Download the following development version of the Energy Policy Simulator (EPS)
https://github.com/Energy-Innovation/ep ... 7a24d5.zip
2. Open either EPS.mdl or EPS.vpmx - it doesn't matter which. (I tested the .mdl in Vensim DSS and the .vpmx in Model Reader, and the crash happened in both cases.)
3. Run the model using the "Simulate" button.
4. Navigate to the variable named `FoPITY Fraction of Policy Implemented This Year`. It is located near the upper left corner of the "Policy Implementation Schedule" sheet. Click on the variable to select it.
5. Click the "Table" button. Vensim crashes.
We recently added support for the EPS to go out as far as 2100, which involved adding more lookups to the data read by this variable. Even before we did this, Vensim was very slow and inefficient at displaying this variable in a table. In contrast, Vensim is much faster and more efficient at showing large variables populated by GET DIRECT DATA in a table, and Vensim can show extremely large data variables in a table. So it seems possible that the code for displaying lookups variables in a table is not optimized for speed or memory consumption, so it crashes Vensim when used on large variables.
We've run into a situation that crashes Vensim with 100% reproducibility. This is on Windows 10. Here are the steps to reproduce the crash:
1. Download the following development version of the Energy Policy Simulator (EPS)
https://github.com/Energy-Innovation/ep ... 7a24d5.zip
2. Open either EPS.mdl or EPS.vpmx - it doesn't matter which. (I tested the .mdl in Vensim DSS and the .vpmx in Model Reader, and the crash happened in both cases.)
3. Run the model using the "Simulate" button.
4. Navigate to the variable named `FoPITY Fraction of Policy Implemented This Year`. It is located near the upper left corner of the "Policy Implementation Schedule" sheet. Click on the variable to select it.
5. Click the "Table" button. Vensim crashes.
We recently added support for the EPS to go out as far as 2100, which involved adding more lookups to the data read by this variable. Even before we did this, Vensim was very slow and inefficient at displaying this variable in a table. In contrast, Vensim is much faster and more efficient at showing large variables populated by GET DIRECT DATA in a table, and Vensim can show extremely large data variables in a table. So it seems possible that the code for displaying lookups variables in a table is not optimized for speed or memory consumption, so it crashes Vensim when used on large variables.