Bugzilla – Full Text Bug Listing |
Summary: | Add way to tell if spec has changed since last run of a model, and to look at old spec if it has. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Description
Leslie Lamport
2009-11-18 02:42:11 UTC
I would make it transparently to the user. If the user clicks on the marker that is pointing to a changed file, the unchanged version should be shown. When a user clicks on an action in the error trace or coverage table, what should happen? I think if the module has not been changed, the action should be highlighted in the writable version of the module. If the module has been changed, it should be highlighted in the read-only version. It's not at all clear what the interface should be. If the user clicks on an error trace produced 6 months ago, he would reasonably expect it to show the saved module. On the other hand, suppose the user runs the model, clicks on the location of one error, corrects that error, saves the module, then clicks on the location of the next error. He would not be happy to find himself in the read-only saved version of the module. My initial thought is that, right next to the notification that the spec has been changed, there should be two buttons the user can push: one choosing the current spec and the other the original spec. (They could both be enabled if he has chosen "original spec" for a different model.) Whichever one he chooses, it's the modules of that spec that appear in all editor views. But that's just my initial thought. I expect I'll find problems with it if I think harder. Here's Dan's and my current view on how saved modules should be handled. 1. Define the current version of a module to be the one in an open editor window, if there is one; else it's the version in the file. If the version of a module saved after running a model is not the current version, then the user should be able to open the saved version by using an option on the TLC Model Checker menu. Clicking on that option shows a list of all modules in the spec for which the saved version of he currently selected model is not the same as the current one. Clicking on one of them opens a read-only editor on that version as a separate tab in the model's view. 2. If the user double clicks on an action in the error-trace view, then this takes the user to the indicated location in the saved module iff (a) the saved version is not the current version and (b) the saved module is open in a tab in the model. I implemented what is described in comment 4 with a modification to item 2. That item is now If the user double clicks on an action in the error-trace view, then this takes the user to the indicated location in the saved module iff the saved module is open in a tab in the model. The toolbox does not check if the saved version is not the current version. |
Summary: | Add reporting of fingerprint collision probability | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The Model Checking Results page should list in the General section the information about probability of fingerprint collision that TLC prints after a run that finishes computing the reachable states. (I think it prints it out in the event of a liveness error.) It should say approximately something like: Probability of fingerprint collision: theoretical: 4.3E-15 pragmatic: 8.7E-15 |
Summary: | Cannot get the default VM install on Mac OS to run TLC | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Simon Zambrovski <simon> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | simon |
Priority: | P1 | ||
Version: | unspecified | ||
Hardware: | x86 32-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
In TLCProcessJob, the method JavaRuntime.getDefaultVMInstall() returns null on Mac OS. A non-null value is required to run TLC. On Leopard, Carbon, 32Bit delivers the code, run in Eclipse (not RCP) IVMInstall install = JavaRuntime.getDefaultVMInstall(); System.out.println(install); -> org.eclipse.jdt.internal.launching.macosx.MacOSXVMInstall@31d55cc System.out.println(install.getInstallLocation()); -> /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home The same platform / installation delivers null in RCP mode. (In reply to comment #1) > On Leopard, Carbon, 32Bit delivers the code, run in Eclipse (not RCP) > > IVMInstall install = JavaRuntime.getDefaultVMInstall(); > System.out.println(install); > -> org.eclipse.jdt.internal.launching.macosx.MacOSXVMInstall@31d55cc > System.out.println(install.getInstallLocation()); > -> /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home Another reference describing the same bug: http://www.eclipse.org/forums/index.php?t=msg&goto=495006&S=af54b9bdf2bc342a1f3154a501e149b5 I posted the message that you linked to in the last comment. Added the plugin dependency to org.eclipse.jdt.launching.macosx to enable Mac OSx support. Could someone try if it solved the problem? Adding a mandatory reference to the OS-dependent plugin was wrong and didn't allow to run the dependent plugin on other platforms. But I made the reference "optional" (click on properties in the plugin.xml editor, dependency tab). Please try if it works. |
Summary: | The help view does not always receive focus when the user clicks help | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA+ Toolbox Help | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The help menu is not getting the focus if it doesn't already have the focus and it either is in or is being opened into a folder that has the focus. This is now fixed by activating the help view in HelpHandler after it is opened by displayDynamicHelp(). In cases where the view already receives focus, this has no effect. In cases when it previously did not receive focus, activating the help view gives it focus. |
Summary: | The rename spec command does not behave properly | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The rename spec command doesn't do the right thing if a spec already exists that has the same name ignoring case but with different capitalization. In particular, a ResourcesException is thrown saying "A resource exists with a different case". If the spec being renamed is open at the time, then a RuntimeException is thrown saying "Specification newSpecName not found" and the toolbox returns to the welcome view. In addition, if a spec is renamed to a name "newName" when there exists a folder newName.toolbox, this seems to cause the same problem. There may be other renaming actions that can cause the same resource problems. I changed the renaming validation method to check if any specifications exist that have the same name but a different case. I cannot reproduce the problem that I said occured when there exists a folder newName.toolbox that has not been opened as a specification and the user renames an open specification to "newName". I will assume that I made this problem up, so the rename spec bug has been fixed. Created attachment 2 [details]
mylyn/context/zip
|
Summary: | Parsing errors in the MC file contain "Encountered ----" sometimes | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Entering an expression such as "1+" followed by nothing in fields of the model editor will result in a parse error message that says "Encountered ----". The parser finds "----" in the MC.tla file because that is the separator between sections. This should probably be replaced with something more useful for the user. I wouldn't bother worrying about that. The message is nicely ambiguous, since it could be interpreted to mean that the parser encountered something that it either can't or isn't bothering to tell you what. More confusing is the stack trace part of the message that talks about line numbers in the MC file. I'd suggest subtracting the suitable number from the line numbers so numbers from 1 through the number of lines in the expression correspond to what the user typed. This will leave most of the line numbers in the stack trace negative, which will tell the user that these are not lines he should expect to see. However, this has low priority. |
Summary: | Add module-editor line width preference | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Add a new parameter that is a default line width for modules. This should be put on a new Module Editor preferences page. (it's not clear to me if any of the General preferences that apply to the module editor should be moved to this page. That should be done only if they apply only to the module editor and not to anything else, such as the Model Editor.) Its default value should be 77. The creation of a new module file by the Toolbox (for example, when opening a new spec with a new file) should use the parameter as follows. Let the value of this parameter be P. Then - The closing line of the module should consist of P "=" characters. - The opening line of the module should consist of the following: N "-" characters, 1 space character, "MODULE", one space character, the module name, one space character, M "-" characters where N and M are the smallest integers greater than or equal to 4 such that: (a) M equals either N or N-1, and (b) The total number of characters in the line is greater than or equal to P I believe this means that, with Java notation, N = Max(4, (Q / 2) + (Q%2)) M = Max(4, Q / 2) where Q = P - ("MODULE".length + ModuleName.length + 3) Also, rename the items under TLA+ Preferences to remove "Preferences" from their names--e.g., change "TLA+ Parser Preferences" to "TLA+ Parser". The preference renaming is moved to the separate Bug 9. What is to do with those numbers, M, N, P and Q? The formulas are not needed for determination of width of new modules (it is trivial, since the content of the module is stored in a template). I don't see any other purpose of the editor width, beyond the usage in the formater. Writing a formater is a task which is usually more than finding out how long the line is. The GENERAL setting of the TEXT EDITOR (not TLA+ Editor) should not be changed. |
Summary: | Rename Preference Pages | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Simon Zambrovski <simon> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Rename the items under TLA+ Preferences to remove "Preferences" from their names -- e.g., change "TLA+ Parser Preferences" to "TLA+ Parser". Created attachment 3 [details]
mylyn/context/zip
|
Summary: | Eclipse buttons don't work on Linux ubuntu 9.10 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Simon Zambrovski <simon> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- | ||
Bug Depends on: | 116 | ||
Bug Blocks: |
I tried it in my linux (ubuntu Karmic) machine. The toolbox, quickly used around 1 gb (1172 mb) of my virtual memory before opening a file. Having 1 GB of physical memory in my laptop, only opening a spec file almost like forever. I don't think it is a normal situation. I tried to upgrade my machine using the latest stable kernel 2.6.31-15-generic, but the problem remains. Other applications (such as netbeans, eclipse, mysql) run normally in my machine. I'm not sure what went wrong. Sincerely yours, Ade Azurat (ade@cs.ui.ac.id) This is not a memory issue. The physical memory usage of the toolbox on startup was only 60MB on his machine. He was unable to open a spec because the Finish button did not work properly on the New Spec Wizard on his machine. In particular, clicking on it does nothing. There is at least one other way to actually select Finish: hold Control and press Enter. It turns out this is an eclipse bug. The same thing occurs with some buttons in eclipse on ubuntu Karmic. This problem is listed many times on bug lists. For example, https://bugs.eclipse.org/bugs/show_bug.cgi?id=291257 https://bugs.launchpad.net/gtk/+bug/442078/comments/28 https://bugs.launchpad.net/ubuntu/+source/eclipse/+bug/443004 From what I've gathered from these bug lists, the most recent release of ubuntu (and maybe some past releases) contains an updated version of gtk, which I've learned is a widget toolkit for greating GUIs. The second link explains that if eclipse had used gtk properly in the past, then this new version would not cause problems, but evidently, eclipse has been using gtk in strange ways that only happened to work on past version but don't work on this new version. The button clicking bug is just one of the problems that exists in eclipse on the newest version of ubuntu. Some of the messages in the first link explain that eclipse 3.5.2 and 3.6 appear to fix the problem, but these versions are still in development. We could get one of the builds of 3.5.2 and use this as the new target platform, but since its not officially released, who knows what bugs this would introduce. This seems like a bad option to me. According to a message on the first link, the target date to release 3.5.2 is February 26, 2010. The GTK developers included a flag that allows the previous behavior of GTK to be used by an application. This flag is set by setting the the environment variable GTK_NATIVE_WINDOWS=1 . I tried this on the linux machine I've been using in Orsay, and it does seem to fix the problem. The only way I've found to set this is to run the command export GTK_NATIVE_WINDOWS=1 in a shell and then run the toolbox from that shell. It would be annoying for the user to have to do this every time, so it might be better to just include those two commands in a shell script that the user would run. We could do this while waiting for eclipse 3.5.2 to be released. Or maybe there is a nicer way to set this flag that I haven't found. Another option as Leslie suggested is to just put a message in every wizard and dialog explaining what to do if clicking on a button doesn't work. Unfortunately, there may be issues with widgets in the toolbox besides buttons that we haven't discovered. Any thoughts on this? This is a slightly updated description of the bug. Some buttons don't work properly on Eclipse and the Toolbox on some platforms. In particular, any platform that uses GTK+ version 2.18 (the latest version) will experience this bug. The desktop environment GNOME uses GTK+ as its base widget toolkit, and the latest version of GNOME (released in September, 2009) uses GTK+2.18. GNOME is the default desktop environment for Fedora, Debian, Ubuntu, and OpenSolaris, so those systems with the latest version of GNOME probably experience the problem. We don't have a distribution for Solaris, so I guess that's not an issue right now. The wikipedia page for GTK+ lists a few other desktop environments that use GTK+ and can run on Linux machines. They are Xfce, LXDE, and ROX Desktop. They don't seem to be very widely used, but we can note those on the website just in case. The complete extent of the bug is not clear. However, from the bug forums and from my tests in Orsay, I believe that the button problem only occurs with the default button in a dialog or wizard. The default button is usually a different color and can be selected by pressing Enter (when they work properly). On platforms with the bug clicking on these buttons will cause the button to appear pressed, but nothing else will happen. If this happens, the user should try one or more of the following: 1.) Press Enter 2.) Hold Control and press Enter 3.) Let the mouse hover over the button and press Enter 4.) Let the mouse hover over the button and press Space There may be other ways to select the buttons, but these are the one's that people have mentioned in the bug forums. Its also worth noting that if a user experiences any other strange behavior with a widget on one of those platforms, then there's a good chance its the same bug. Some of the posts on the bug forums mentioned other problems with GTK+ 2.18 besides the buttons. I don't believe these problems are relevant to the Toolbox, but there may be some other non-button problems that are. The workaround provided by the GTK+ developers is to set GDK_NATIVE_WINDOWS=true in a shell before launching the toolbox (or eclipse) from that shell. This causes GTK+ to behave as it did before 2.18. The real fix will be provided in Eclipse 3.5.2 which is scheduled for release on February 26, 2010. The trace explorer buttons for Explore and Restore seem to be affected by this bug. Once fixed the system specific Instructions for Linux [0] can be removed from the web page. [0] http://research.microsoft.com/en-us/um/people/lamport/tla/toolbox.html#downloading The new Maven/Tycho based build has upgraded the toolbox dependency to Eclipse 3.6, marking as fixed. |
Summary: | Add the notion of a model being locked | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
We still have the problem that TLC might be running for weeks, and the user in the meantime changed the spec. When TLC stops running, the model gets revalidated and stuff that was in the model configuration gets lost. Here is a possible solution: Add the notion of a model being LOCKED, meaning that it cannot be changed in any way, meaning that it is read only and it doesn't change to conform to the current spec. (This state actually exists in the toolbox now: it is called "model in use".) In particular, it conforms to the copy of the spec that's salted away with the model. Running the spec locks the model. There will also be a menu item that the user can select to lock the spec himself. (This will allow the user to protect himself from accidentally modifying or re-running a spec by mistake--perhaps losing a trace that took weeks for TLC to produce.) We must decide what should happen to the lock state when a TLC run completes. Should the user have to explicitly unlock it? I suggest that it be unlocked when the run completes if and only if that run did not take too long--where "too long" is a user-settable preference. I'll add a field to the TLC preference page that specifies how long the model must run in order to remain locked when TLC terminates. I'll add a lock and an unlock button to the toolbars that currently contain the buttons for running, validating, and stopping. I think there should be a notion of an explicit user lock and an automatic lock. A user lock occurs when the user clicks on the lock button. An automatic lock occurs when TLC starts. A model with a user lock can only be unlocked when the user clicks the unlock button. A model with an automatic lock can be unlocked if TLC terminates in less than the specified time or if TLC terminates in more than the specified time and the user clicks the unlock button after TLC completes. If a user locks a model while there is an automatic lock (he clicks the lock button while the model is running), then the user lock replaces the automatic lock. When the model is locked, all fields in the model editor will be disabled (they will have the grayed out look, and the user will not be able to edit them). The lock button will be enabled when TLC is running and the unlock button will be disabled. When TLC is not running, the unlock button will be enabled only when the model is locked and the lock button will be enabled only when the model is unlocked. This sounds good. Should the user be able to rename the model when it is locked? It doesn't matter whether or not the user is allowed to rename a locked model. (If he is allowed to remain it, that shouldn't unlock it.) |
Summary: | Toolbox checking unselected behavior spec options. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | a spec |
When I change the spec to remove all variables and save it and then open an existing model, the model correctly opens with the "No behavior spec" option selected and the other options disabled. However, when validating the Toolbox, it complains that the Init and Next formulas left over from the previous version (which I can't change because the option is disabled) are undefined. We should make sure that no entry from a disabled field is ever put into the MC file. I can't seem to reproduce this error. Can you send me the spec and model that caused this problem? Since this does not seem to be reproducible, I'm marking it as worksforme. Created attachment 4 [details]
a spec
see description
Open a new spec with this root file. Create a model for it, assigning arbitrary small integer values to M and N and using Init and Next as the initial predicate and next-state action. Add the invariant (x=y) => x = GCD(M, N) Run the model. It will produce an error, which you can ignore. Now enter ===== right before the CONSTANTS declaration and save the module. Go to the model and validate it. Depending on the Toolbox's mood, you'll get 5 or 7 errors. If you get 7 errors, two of them will be complaining about Init and Spec. But you may get only 5, in which case it is correctly complaining about the bad Invariant. However, it's impossible to remove the invariant because the invariant section can't be opened. This is not a terrible problem; one just has to add a variable to the spec. But it's a nuisance--especially if the randomly occurring complaint about Init and Spec occurs. The statement in my previous comment that the 5 errors in the Invariant are not a bug was wrong. You can't check invariants or other properties if there's no spec, so they should be ignored in that case. Other parts of the model that should be disabled and ignored when there's no behavioral spec are: - Recover from Checkpoint - Number of workers - State and Action constraint - TLC Options I don't believe that number of workers makes any difference. The toolbox was already disabling the invariants and properties sections but was not ignoring them when it launched TLC. It now ignores them. It also ignores checkpoint recovery, state and action contraints, and anything in the TLC Options section. I found that disabling the State Constraints, Action Constraints, and TLC Options sections creates some bizarre behavior on the Advanced Options page, so I decided not to do this. |
Summary: | Trace exploration | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
After an error trace is generated from a run of TLC, the user should be able to enter one or more expressions for which he wants to see the value at each state of the trace. Currently, I think the TLC Error View should contain a section that looks the same as the invariants or the properties sections. This would require some re-implementation of the lower part of the view's sash form, but I think this would be a nice interface. In addition to the Add, Edit, and Remove buttons, the section will contain a run button. I'm not yet sure where the best place for this button is. Its necessary to determine if an expression contains primed variables. We could do this by providing the user with a checkbox for each expression that indicates if it has primed variables. We could also run SANY to determine if an expression has primed variables. This would require running SANY once to determine which expressions have primed variables, once to parse the initial predicate and next-state relations that are generated for exploring the trace, and once when TLC runs. I think it is preferable to provide the user with a checkbox and display the error produced by TLC if the user makes the wrong selection. Clicking the run button will execute the trace explorer, unless one of the following conditions is true: 1.) The model is unlocked and the spec is not parsed. 2.) The model has a validation error (If the validation error is in the spec, init and next, invariants, properties, or constraints sections, this should not prevent the user from running the trace explorer, although this might be a little more difficult to implement). If one of these conditions is true, then an error window will pop up explaining the error. If neither is true, the following steps will occur: 1.) The toolbox will run SANY to validate the expressions. If there are errors, these will be displayed as red error bubbles (the same as in the model editor). 2.) If SANY finds no errors, TLC will be run to evaluate the expression at each state of the trace (If the expression contains primed variables, then it cannot be evaluated for the last state of the trace). 3.) If TLC produces an error evaluating the expressions at any state, then I think this error should be appended to the existing message in the error box at the top of the error view. Another option is to have a separate box for reporting errors from evaluating expressions for trace exploration. A third option is to display the errors in error bubbles as with validation errors. 4.) If TLC does not produce an error, then the existing error trace will be replaced with a new error trace. Each state will be identical to the corresponding state in the previous trace except that there will be one additional row for each expression that was evaluated. The left column of a row corresponding to an expression will have the expression and the right column will have its value. If an expression contains primed variables, then the value column of its row in the final state will have something like "--" to indicate that it cannot be evaluated. A while ago Leslie and I discussed the meaning of primed variables when exploring the error trace. I'm not sure if we came to a conclusion on this point, but I think that if an expression contains the primed value of a variable x, then the value of that expression at state number z should use the value of x in state number z+1. For example, consider the following trace. STATE 1: <Initial predicate> /\ x = 0 /\ y = 0 STATE 2: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 1 /\ y = 0 STATE 3: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 2 /\ y = 1 STATE 4: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 3 /\ y = 3 If the user wants to evaluate the expression x'+y, then I think he should see the following trace. STATE 1: <Initial predicate> /\ x = 0 /\ y = 0 \* x'+y = 1 STATE 2: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 1 /\ y = 0 \* x'+y = 2 STATE 3: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 2 /\ y = 1 \* x'+y = 4 STATE 4: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 3 /\ y = 3 \* x'+y = "--" The other option, which would be easier to implement, but which makes less sense to me would be to display the following trace. STATE 1: <Initial predicate> /\ x = 0 /\ y = 0 \* x'+y = "--" STATE 2: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 1 /\ y = 0 \* x'+y = 1 STATE 3: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 2 /\ y = 1 \* x'+y = 2 STATE 4: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 3 /\ y = 3 \* x'+y = 4 In the preceding trace, the value of x' in the second state is equal to the value of x in the second state instead of the value of x in the third state. 1.) Create three new files in the model folder, TE.tla, TE.cfg, TE.out (TE stands for trace explorer, might need to choose something that the user is less likely to choose as a module name). 2.) For each expression the user enters for trace exploration, assign an identifier that is unlikely to appear in the spec. Declare these identifiers as variables in TE.tla. Alternatively, the user could be responsible for assigning identifiers to expressions. 3.) Fill TE.cfg and TE.tla with the values of constants, additional definitions, definition overrides, and additional model values. 4.) Write the initial predicate and next-state relation to TE.cfg and TE.tla. This is best illustrated with an example. The trace is the following: STATE 1: <Initial predicate> /\ x = 0 /\ y = 0 STATE 2: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 1 /\ y = 0 STATE 3: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 2 /\ y = 1 STATE 4: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 3 /\ y = 3 The user wants to evaluate two expressions: x + y x' > y The file TE.tla will define two new variables: VARIABLES sum, big The variables are named "sum" and "big" for the simplicity of this example. In reality they will be something like "trace_2348902347238", unless the user is responsible to assigning labels to the expressions. The file will also define two new identifiers: sum_def == x + y big_def == x' >y We define the initial predicate and next-state relation as follows: TInit == /\ x = 0 /\ y = 0 /\ sum = sum_def /\ big = "--" TNext == \/ /\ x = 0 /\ y = 0 /\ x' = 1 /\ y' = 0 /\ sum' = sum_def' /\ big' = big_def \/ /\ x = 1 /\ y = 0 /\ x' = 2 /\ y' = 1 /\ sum' = sum_def' /\ big' = big_def \/ /\ x = 2 /\ y = 1 /\ x' = 3 /\ y' = 3 /\ sum' = sum_def' /\ big' = big_def The expression defined by big_def has primed variables so the variable big takes the value "--" in the initial state predicate. The expression defined by sum_def does not contain primed variables. This will produce an error trace by defining the invariant: ~(x=3/\y=3) The TLC Error View will have to alter this error trace if it is to display it in the way I described in the previous comment. In particular, the value of big must be shifted up one state and the last state should have that big = "--". Thus, the value of big in the second state will be displayed with the first state in the error view. The toolbox will call TLC on the root file TE.tla with config file TE.cfg and write its output to TE.out. One question that I forgot to put in the first comment. When the model is unlocked, should running the trace explorer cause module files to be recopied to the model directory? Currently, I think the TLC Error View should contain a section that looks the same as the invariants or the properties sections. This would require some re-implementation of the lower part of the view's sash form, but I think this would be a nice interface. In addition to the Add, Edit, and Remove buttons, the section will contain a run button. I'm not yet sure where the best place for this button is. The button should be the same place as the Add/Edit/Remove buttons. And it should be an "explore" button. The button to restore the original trace (see below) should be in the same place. Its necessary to determine if an expression contains primed variables. We could do this by providing the user with a checkbox for each expression that indicates if it has primed variables. We could also run SANY to determine if an expression has primed variables. This would require running SANY once to determine which expressions have primed variables, once to parse the initial predicate and next-state relations that are generated for exploring the trace, and once when TLC runs. The second run of SANY isn't necessary. If the expressions parse correctly in the first parse, then the initial predicate and next-state actions that the Toolbox creates will also parse correctly. (This isn't completely trivial, but it's easy to ensure. For example, the first module that SANY parses should declare the new variables to make sure that they are legal variable names.) I think it is preferable to provide the user with a checkbox and display the error produced by TLC if the user makes the wrong selection. Since it doesn't require an extra parse, the Toolbox should determine this by itself. Clicking the run button will execute the trace explorer, unless one of the following conditions is true: 1.) The model is unlocked and the spec is not parsed. 2.) The model has a validation error (If the validation error is in the spec, init and next, invariants, properties, or constraints sections, this should not prevent the user from running the trace explorer, although this might be a little more difficult to implement). It's not worth worrying about this. The explorer should be run only if there is no validation error. If one of these conditions is true, then an error window will pop up explaining the error. If neither is true, the following steps will occur: 1.) The toolbox will run SANY to validate the expressions. If there are errors, these will be displayed as red error bubbles (the same as in the model editor). 2.) If SANY finds no errors, TLC will be run to evaluate the expression at each state of the trace (If the expression contains primed variables, then it cannot be evaluated for the last state of the trace). 3.) If TLC produces an error evaluating the expressions at any state, then I think this error should be appended to the existing message in the error box at the top of the error view. Another option is to have a separate box for reporting errors from evaluating expressions for trace exploration. A third option is to display the errors in error bubbles as with validation errors. The original error should not be destroyed or mucked with. Remember That it might have taken TLC a week to produce that message. I suggest that in case trace exploration yields an error, that error should replace the original error in the window--with some clear indication that the error occurred in trace exploration. If the exploration also produces an error trace, then that trace should be displayed in the trace view. If the trace explorer succeeds on the next try, the original error message is restored. When the user clicks on the button to restore the original trace (see below), that should also restore the original error message. 4.) If TLC does not produce an error, then the existing error trace will be replaced with a new error trace. This replacement is not permanent. The original error trace must be saved, and there must be a button that permits the use to restore it. Each state will be identical to the corresponding state in the previous trace except that there will be one additional row for each expression that was evaluated. The left column of a row corresponding to an expression will have the expression and the right column will have its value. If an expression contains primed variables, then the value column of its row in the final state will have something like "--" to indicate that it cannot be evaluated. A while ago Leslie and I discussed the meaning of primed variables when exploring the error trace. I'm not sure if we came to a conclusion on this point, but I think that if an expression contains the primed value of a variable x, then the value of that expression at state number z should use the value of x in state number z+1. For example... Yes, that's correct 1.) Create three new files in the model folder, TE.tla, TE.cfg, TE.out (TE stands for trace explorer, might need to choose something that the user is less likely to choose as a module name). TE is fine. As with MC, the user shouldn't be allowed to create a module named TE. 2.) For each expression the user enters for trace exploration, assign an identifier that is unlikely to appear in the spec. Declare these identifiers as variables in TE.tla. Alternatively, the user could be responsible for assigning identifiers to expressions. It's better to have the user choose the identifier. If the user defines Sum2 == x'+y Then the error trace would contain something like STATE 1: <Initial predicate> /\ x = 0 /\ y = 0 /\ Sum2 = 1 STATE 2: <Action line 8, col 3 to line 9, col 15 of module Test> /\ x = 1 /\ y = 0 /\ Sum2 = ... One reason for this is that it would be good to allow the user to change which variables' values are displayed and in what order. If this feature is implemented, Sum2 would be treated as just another variable like x and y. When the trace from the trace explorer is shown for a given model, it will continue to be shown in the error view for that model unless model checking is run, the restore button is pressed, or the error hyperlink on the results page is pressed. Closing and re-opening the toolbox, switching to another model and back, closing and re-opening using the menu item in the TLC menu will show in the error whatever errors were previously there for that model (errors from the trace explorer or errors from model checking). I decided to make the hyperlink on the results page restore the original error/trace in case the trace explorer somehow messes up the error view so that the restore button does not appear. |
Summary: | The column numbers do not appear in module editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
At one point I think the column number of the cursor appeared at the bottom of the module editor. I may have removed this when turning the module editor into a multipage editor to include a pretty printed version of the module. I created a class TLAMultiPageEditorActionBarContributor that acts as the contributor class for the TLAEditorAndPDFViewer class that is the editor for TLA modules. The contributor adds the cursor position to the status line at the bottom of the toolbox when a text editor is active. I also re-added the Content Assist and Content Tip menu items to the edit menu that I had removed when I made the editor for tla modules into a multi page editor. I'm not sure what the Content Tip item does, but it was there before. |
Summary: | Rename or deleting root file outside toolbox produces incorrect editor page | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
If the user renames or deletes a root file outside of the toolbox and then opens the spec, the toolbox displays a page that says Resource is out of sync with the file system: '/test/test10.tla'. Press F5 or select File -> Refresh to refresh the file. Pressing F5 does nothing and File -> Refresh does not exist in the toolbox, so I guess this page is generated by eclipse code. The toolbox also shows the Parsing Error view which says "Could not find module." A solution is to attach a resource change listener to the work space. If the root file is renamed the listener would change the spec to point to the new root file name. I think that it would also have to change the name of the root module to equal the new file name. If the root file is deleted, the listener would change the spec to reflect this and the open spec handler would have to check for this before opening an editor on that file. I don't know that this would always put the toolbox in sync with the file system, because its not clear exactly when resource change listeners get notified of resource changes. An easier solution would be to simply check before opening an editor on the root file if that file still exists with the name the toolbox thinks it has and display an sensible error message to the user if it doesn't. Resource change listeners are notified of resource changes that occur outside of the toolbox only after the method refreshLocal is called on a directory containing the changed resources. AFAIR ResourceChangeListener only track resources while the workbench is up and running. If spec or .toolbox/* files are moved/deleted while the Toolbox is down has to be handled too. Otherwise exception like the following show up in the log and/or current editor: org.eclipse.ui.PartInitException: The file does not exist. at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3075) at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3088) at org.lamport.tla.toolbox.editor.basic.TLAEditor.init(TLAEditor.java:175) at org.eclipse.ui.part.MultiPageEditorPart.addPage(MultiPageEditorPart.java:237) at org.eclipse.ui.forms.editor.FormEditor.addPage(FormEditor.java:325) at org.lamport.tla.toolbox.editor.basic.TLAEditorAndPDFViewer.addPages(TLAEditorAndPDFViewer.java:70) at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271) at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429) at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: org.eclipse.core.runtime.CoreException: The file does not exist. at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:237) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.eclipse.ui.editors.text.TextFileDocumentProvider.createFileInfo(TextFileDocumentProvider.java:559) at org.eclipse.ui.editors.text.TextFileDocumentProvider.connect(TextFileDocumentProvider.java:478) at org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput(AbstractTextEditor.java:4056) at org.eclipse.ui.texteditor.StatusTextEditor.doSetInput(StatusTextEditor.java:217) at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.doSetInput(AbstractDecoratedTextEditor.java:1444) at org.eclipse.ui.editors.text.TextEditor.doSetInput(TextEditor.java:169) at org.eclipse.ui.texteditor.AbstractTextEditor$19.run(AbstractTextEditor.java:3043) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2606) at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3061) ... 45 more !ENTRY org.eclipse.ui 4 0 2011-05-09 18:46:38.059 !MESSAGE Unable to create editor ID org.lamport.tla.toolbox.editor.basic.TLAEditorAndPDFViewer: assertion failed: !STACK 0 org.eclipse.core.runtime.AssertionFailedException: assertion failed: at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110) at org.eclipse.core.runtime.Assert.isTrue(Assert.java:96) at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1065) at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:607) at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:352) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271) at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429) at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !ENTRY org.eclipse.ui 2 2 2011-05-09 18:46:38.163 !MESSAGE Ignored attempt to add saveable that was already registered !STACK 0 org.eclipse.core.runtime.AssertionFailedException: unknown saveable: org.eclipse.ui.internal.DefaultSaveable@3a33a6b8 from part: org.eclipse.ui.internal.ErrorEditorPart@3a33a6b8 at org.eclipse.ui.internal.SaveablesList.logWarning(SaveablesList.java:187) at org.eclipse.ui.internal.SaveablesList.addModel(SaveablesList.java:117) at org.eclipse.ui.internal.SaveablesList.addModels(SaveablesList.java:289) at org.eclipse.ui.internal.SaveablesList.postOpen(SaveablesList.java:684) at org.eclipse.ui.internal.PartList.partOpened(PartList.java:234) at org.eclipse.ui.internal.PartList.access$0(PartList.java:210) at org.eclipse.ui.internal.PartList$1.propertyChanged(PartList.java:40) at org.eclipse.ui.internal.WorkbenchPartReference.fireInternalPropertyChange(WorkbenchPartReference.java:375) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:610) at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271) at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429) at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) One more stacktrace: !ENTRY org.eclipse.core.resources 4 2 2011-05-09 19:19:40.165 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.ui.contribution.StatusReflectingSpecLifecycleParticipant.initialize(StatusReflectingSpecLifecycleParticipant.java:23) at org.lamport.tla.toolbox.util.SpecLifecycleManager.initialize(SpecLifecycleManager.java:49) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.<init>(WorkspaceSpecManager.java:58) at org.lamport.tla.toolbox.Activator.getSpecManager(Activator.java:297) at org.lamport.tla.toolbox.util.ResourceHelper.getResourceByName(ResourceHelper.java:147) at org.lamport.tla.toolbox.util.ResourceHelper.getResourceByModuleName(ResourceHelper.java:137) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:258) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:83) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:56) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:67) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) |
Summary: | cygwin doesn't properly unzip the Windows executable | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
I received the following problem report from a user here. The problem occurred when he unzipped the file using Cygwin's unzip command. It worked fine when he used WinZip. He also said that when he unzipped with WinZip, then produced a zip file with Cygwin and unzipped that file with Cygwin, it worked fine. This all happened on an XP system. We should see if this is reproducible. If it is, we should spend a few milliseconds trying to figure out if there's a way to produce a zip file that Cygwin will handle properly. If we can't figure out such a way, we should warn users not to unzip with Cygwin. ----- I tried to install the toolbox but I'm getting an error. My operating system is Windows XP. Here's what I did: - downloaded ZIP file from http://www.msr-inria.inria.fr/ Projects/tools-for-formal-specs/toolbox.win32.win32.x86.zip - unzipped it to c:\, creating directory c:\tlatoolbox - installed Java (Java Version 6 Update 17). - rebooted computer - executed c:\tlatoolbox\toolbox.exe - got a pop up window that says "The Toolbox executable launcher was unable to locate its companion shared library" |
Summary: | tlatex translation not working? | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLATEX Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When I try to produce a pdf version, the appropriate tab appears but it is blank. While this could be a problem with my installation, it has worked in the past and I haven't changed anything in my LaTeX installation. (Which doesn't mean that Windows didn't decide to change it for me.) However, no log entry is produced, which is a bug even if the Toolbox is calling tla2tex correctly. Moreover, even if there were a problem with my LaTeX installation, TLATeX would write a .tex file and the Toolbox command isn't doing that. And furthermore, there is an old version of the pdf file in the .toolbox directory that the Toolbox isn't displaying. Also, I don't remember if TLATeX produces an error message that the Toolbox is supposed to recognize and translate into an error warning for the user. If that's not being done now, it should be implemented. The translation is working for me now. As near as I can tell, nothing changed in the Toolbox or in my machines' configuration. Of course, this being modern software, it might now be working because Neptune entered Sagitarius. |
Summary: | Modifying the Toolbox to handle pcal files. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED INVALID | ||
Severity: | enhancement | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 33 |
There will be two kinds of module files: .tla and .pcal files. A root or non-root file of a spec can be of either kind. A .pcal file has a derived .tla file that is produced by running the pcal translator, which is done by calling pcal.trans.runMe(). For a pcal module, "parsing" consists of running the pcal translator and then, if there are no errors, parsing the resulting tla file. (Thus, no additional "translate on save" option is needed.) When the user opens a pcal module, the corresponding tla file should be opened in another tab of the editor (but the pcal file's tab should have the focus). Eventually there will be a version of tla2tex for pcal files. There will then need to be two separate commands for producing a pdf version of the pcal file and of the tla file. (The latter command should not be commonly used.) For now, the "Produce PDF Version" command will call tla2tex on the tla file. Should the user want to edit the tla file? Normally, it's a bad idea to edit derived files. However, I can imagine the user wanting to add debugging code to the algorithm. Adding it to the TLA+ translation might be a nice way to do this, since he will probably that code will then be removed when he fixes the bug in the pcal file and translates it. I suggest that the default be to pop up a warning the first time the user changes the tla file after it's translated. We can have a preference that allows him to disable that warning. We could also have a preference that makes the tla file read only. Most command-line options will be specified by the options statement in the pcal file. Moreover, the most common options, which specify fairness and termination, will eventually be eliminated by changes to the language. However, the user may want to specify some global default options that will be passed to the translator as command-line options. A preference will be provided to specify that. Its default value will be -nocfg. Since the ability to specify options for an individual spec in the Spec Explorer has been implemented, we perhaps we should keep it--letting the preference specify the initial setting of that field. Since those options will rarely be set by the user, it doesn't make much difference what we do. A read-only copy of the pcal file should be saved in the model's subdirectory along with the tla file. The module is considered to have changed if either the pcal file or the tla file has been changed since it was last translated or parsed. I think this is a complete list of what has to be changed to handle pcal files. The plan for using pcal files has been abandoned, so this is moot. |
Summary: | Toolbox caches obsolete values on startup | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | stack trace |
I regularly synchronize my home and office machines by copying files back and forth between them. This means that I frequently overwrite .toolbox directories. If I open the Toolbox and it restores the previous state, it fails to check if the models that it knew about when it was last run are still there. This causes bizarre behavior. Often the Toolbox fails to start the first time I try to open it. By the way, is P4 higher or lower priority than P3? Created attachment 36 [details]
stack trace
|
Summary: | Model editor incorrectly reports that TLC is running | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: |
Root module for spec
toolbox directory containing the only model |
Opening the spec and the (only) model (see attachments) gets the model in a state in which most of it thinks that TLC is running, except that the Model Checking Results page correctly reports its status as "Not running". This state may have been produced by running the trace explorer, but running the trace explorer on another spec doesn't do that. Created attachment 5 [details]
Root module for spec
Created attachment 6 [details]
toolbox directory containing the only model
|
Summary: | Browsing for a new spec on Mac does not allow user to type in name | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 32-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
In Windows, you can create a new file by browsing to an existing directory, typing in the name of the file, and clicking on Open. This opens the file if it exists, and creates it if it doesn't. The Toolbox's file browser on the Mac doesn't offer the option of typing in a file name. In a standard Mac interface, you have two menu items. One (open) to open an existing file and the other (save as) to save the contents of the window to a new file (possibly overwriting an existing file). Accordingly, there are two file browsers: the "open" file dialog and the "save" file dialog. In the case of the toolbox, it is missing a "new" menu item to create a new empty window, and the "save as" item doesn't open the right dialog. Changing the file dialog to a "save" dialog allows the user to type in the file name on Mac. The downside is that next to the text bar where the user can type in the file name, the dialog says "Save As", and the button to finish says "Save". We can set the title of the dialog to be whatever we want. The save dialog has been implemented for Mac OS X. The Save As menu also now opens a save dialog instead of an open dialog on all operating systems. |
Summary: | Help does not work on Mac | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Toolbox Help | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 32-bit | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Jean-Charles reports that nothing appears on the Help menu at the top of the screen when the Toolbox is selected. (That's where MAC is supposed to show the help choices.) I do not believe it is possible to have one click help as a menu. It would appear that it is necessary to make Dynamic Help a menu item of the Help menu. This is fine because we are going to add an About menu item there as well. The Help menu now has a Dynamic Help item. Created attachment 11 [details]
mylyn/context/zip
|
Summary: | Minor fixes to the Trace Explorer Window | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
- Add a local help button (the ? inside a circle) that leads to help for the window. - When the user selects a state in the Error Trace, he sees the value of the expression as something like __trace_var_126403425857315000 = 12 The user should not see a variable name like that. Best would be to replace the variable name with the expression, the way it's shown in the Error Trace. If this isn't easy, the Toolbox should use shorter variable names for the expressions. - When nothing is selected in the Error-Trace window, the bottom text field says "No error information". It should say something more helpful, like: Select line in Error Trace to show its value here. Help button has been added. Variable names of trace explorer expressions in the value viewer are replaced with the single line form of the expressions (as shown in the trace viewer.) If the user enters a multi-line expression, all line breaks are removed. If the line breaks are not removed, then the value of the state is difficult to read. The order of the variables now reflects what is shown in the trace viewer. For variables that do not represent trace explorer expressions, I have attempted to keep the format the same as TLC's output. Created attachment 9 [details]
mylyn/context/zip
|
Summary: | Parsing an unsaved file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If you click on the "parse" button when the file has been modified, the Toolbox asks if you want to save the file but neither saves it nor parses it when you answer "yes". Clicking on "Parse Spec" when a spec module has been modified since last save brings up a dialog asking if you want to save the modified resources. If you click yes, it parses the spec but does not save the modified resources. If you click "Parse Module" on a module that has been modified, the toolbox does not prompt you to save. It just parses the module without saving. In the dialog that asks if you want to save the modified resources, clicking "No" has the same effect as clicking "Yes". I changed the dialog to have three buttons, Yes, No, Cancel. Yes saves any modified .tla files and parses, No parses without saving, and Cancel does not save or parse. This dialog appears if there are modified resources when the user selects "Parse Spec" or "Parse Module". I changed the dialog to OK/cancel. If the user selects OK, the unsaved modules are saved and the spec or module is parsed. Cancel does not save or parse. Created attachment 10 [details]
mylyn/context/zip
|
Summary: | Minor problem with value display in TLC Error Trace view | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
When no line in the Error Trace is selected, the text box below it should say Select line in Error Trace to show its value here. It does not display this when the TLC Errors Window is first raised. Nor does it do that when the Explore or Restore button is pushed--unless a line in the Error Trace was already selected when that Button was pushed. Created attachment 8 [details]
mylyn/context/zip
|
Summary: | Elements with multiple lines do not display properly in trace viewer | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
A name/expression or value that takes up multiple lines does not display properly in the trace viewer. In particular, only the first line shows. I don't understand. The trace viewer (the two-column viewer with Name and Value columns) shows only a single line. To view a multi-line value, the user should either select the line, in which case the entire value should appear in the viewer, or expand the line so he can view the individual parts of the value separately. This seems to be working as it should. What am I missing? Sorry, I was incorrect in saying that multi-line values display incorrectly. The bug is in displaying multi-line trace explorer expressions in the Name column. Only the first line appears. Multi-line expressions are now displayed as a single line in the Name column. Created attachment 7 [details]
mylyn/context/zip
|
Summary: | Extra menu for the toolbox on Mac | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | bugzilla.tlaplus.net, simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The toolbox on Mac OS has an extra menu item entitled "TLA+ Toolbox." It has the menu items "About TLA+ Toolbox", "Preferences...", "Services", "Hide TLA+ Toolbox", Hide Others", "Show All", and "Quit TLA+ Toolbox." "Services" seems to be permanently grayed out. The Preferences menu item also appears in the File menu, which I think is fine. All menu items perform as expects, except for the "About TLA+ Toolbox" menu item which seems to do nothing. We are going to add an About item to the Help menu. It would be nice to be able to remove the one from the "TLA+ Toolbox" menu, but I'm not sure if this is possible. Fixed in HEAD Created attachment 104 [details]
mylyn/context/zip
|
Summary: | Use of model values | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
a. There is no reason why the user cannot use the same model value in two different constant instantiations or in a constant instantiation and a definition override. Or uses a model value declared on the advanced page as a model value in a constant instantiation. This requires checking that a model value is declared elsewhere before adding a CONSTANT declaration for it. b. The correct order in which things should be written in the MC file are: - Declaration of advanced model values. - Declaration of the sets of model values that instantiate constants. - New User Definitions. - Everything Else, which is all of the form newId_1234567 == some expression. However, the current structure of the toolbox makes it a nuisance to do this, and the current validator will disallow the models that this order is designed to allow. |
Summary: | PlusCal translator errors do not disappear | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Suppose the user starts to write a PlusCal algorithm, translates it and gets a PlusCal error, and then decides to delete the PlusCal code and just write the spec in TLA+. There's no way for him to get rid of the PlusCal error message in the Parse Errors window. In fact, even if I run the translator on another module, the PlusCal error remains in the Parse Error window--whether or not the other translation produces an error. (The only way to get rid of it is to go back to the original module, correct the PlusCall error, and re-run the translator.) The best thing to do is probably to create a separate PlusCal Error Window. Running the translator should first clear this window and remove all PlusCal error markers in the module on which the translator is run. (I believe that if running the PlusCal translator creates a PlusCal error, then the file is not re-parsed, so only the PlusCal error window would need to be popped up.) |
Summary: | The Definitions Override menu allows the user to override the same definition multiple times. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The Definitions Override menu allows the user to override the same definition multiple times. |
Summary: | Parsing spec command gets disabled | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
For a big spec--in particular, for the farsite spec, after Parse the parse spec command gets disabled. But parse module file still works. Simon thinks it may be that the build infrastructure of Eclipse is deactivating builders under some conditions--for example, if a builder dies with an exception, it is deactivated. Perhaps it's also deactivated on a time-out. The list of builders is attached to the project, so one can query the project or the project nature to find this out. So, Simon assumes that for some reason, the builder is deactivated. The parser is being launched in a separate thread, but Simon thinks that perhaps he's not doing it in the right way. |
Summary: | Closing the toolbox simply kills any running TLC | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Closing the toolbox simply kills any running TLC. Instead, it should warn the user that this will kill TLC and give him the option of canceling. To do this, need to modify to CloseSpecHandler.execute() so it checks if editors have been closed successfully before exiting. The model editor's method that gets called by the closeAllEditors method should return false. Another approach is to register another handler in place of this one when TLC is running, and having that handler call the current one only if the user says it's OK to stop TLC. |
Summary: | PlusCal translation needs to be reimplemented to handle .pcal files | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED INVALID | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Bug Depends on: | 18 | ||
Bug Blocks: |
PlusCal translation needs to be examined. Here are some things that need to be fixed: - There should be a more user-friendly way to specify translation options. This involves: (a) Providing check-boxes or radio buttons for the common options. (b) Finding a more convenient way to add them than the current one (right-clicking in the Toolbox Explorer) and selecting properties. - Translation options are now attached to the spec; they should be attached to an individual module. (It's possible for a single spec to have PlusCal algorithms in two different modules.) I renamed this, but apparently bugzilla doesn't allow me to change the description. The things mentioned in the description are minor compared to the major change required: adapting the Toolbox to the new way to use PlusCal: by having .pcal file containing the algorithm separate from the .tla file containing its translation. This requires that the user be able to open a spec with a .pcal file as its "root". The existence of the two files raises many new issues to be dealt with, such as: - Should the user be able to edit the .tla file? This is a bad idea in general, but it's conceivable that the user may want to do this. It should be made difficult but not impossible. That is, the editor on the .tla file should by default be read-only. - The user should be able to pretty-print either of the two files or both of them. (TlaTeX will need to be modified to work on .pcal files.) - Do we allow the user to create a spec or open a module editor on a .tla file for which there also exists a .pcal file? Perhaps that should be the way for him to edit the .tla file. The plan to use .pcal files has been abandoned as a bad idea. |
Summary: | Reset window layout produces blank window in welcome perspective | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
If I select window / reset window layout in the Welcome Perspective, it produces a blank window instead of the Welcome View. We should just disable the reset window command. |
Summary: | Module editor keybindings | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Here are some thoughts on enhancements to the Module Editor. - Add a preference to choose an Emacs-like keybinding. This requires adding new commands that appear in the General/Editors/Keys, and options that choose from among sets of bindings. - Add editing commands (and invent bindings) for comments. Perhaps copy the commands I use for boxing comments. Note that Simon has bound toggle comments to Control-/, but that command doesn't appear either when I type Ctl-Shift-L or in tthe preferences keybinding options. |
Summary: | Option to add lists of weakly and strongly fair actions | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WONTFIX | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Enhance the Init/Next method of writing the spec to add lists of weakly and strongly fair actions. LL Comment: Now that the user can specify fairness with PlusCal, this seems unnecessary. |
Summary: | Change default for making a set of model values typed or untyped | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When the user has chosen assigned a set of model values to a constant and specified symmetry, the default on the next page of the wizard should be to make the values untyped. This may be hard to do because the second wizard page is created before the first page of the wizard is raised. If it's hard, perhaps we should change the default to be to make the values untyped. This is done in TypingWizardPage.createControl. The reason of the default setting being "typed" is because we want people to use typed sets instead of untyped sets. |
Summary: | Import Existing spec option behaves incorrectly when .toolbox directory does not exist | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED WONTFIX | ||
Severity: | trivial | CC: | bugzilla.tlaplus.net, simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When creating a new spec, the Import Existing spec option is always checked and disabled. It should be unchecked and disabled if the .toolbox directory does not already exist. However, if the .toolbox directory does exist, its present behavior of checking and enabling the box is the correct one. If it's hard to have both behaviors, forget about this. It has been forgotten about. |
Summary: | When a spec is open, the module browser should show the specification's directory | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
When the user clicks on File/Open Module/Choose TLA+ Module, the file browser that pops up should show the specification's directory. I find it more natural if it is the last directory you were in. If you want to add five modules from another directory you have to navigate five times to it, instead of once... I think that the file browser should open to the specification's directory because SANY requires all the module files for a specification to be in the same directory. Simon's comment makes some sense, as long as "the last directory you were in" means the last directory from which you opened a file in a module editor. This means that, when I first open a spec, "the last directory I was in" is the spec directory. Currently, the browser doesn't open on the last directory I was in, but on the directory of the last spec that I closed. That is clearly wrong. Opening a module from a directory other than the spec's is something that seems to me to be so uncommon that I don't know whether it's better to open the browser on the last directory I was in or on the current spec's directory. I can think of scenarios in which each is the better thing to do. However, since it's so uncommon, I don't think it makes much difference. As a guess, I'd say that it's better to open it on the spec's directory. However, if either is easier to implement than the other, then let's go with that one. This problem applies to Save As as well as Open Module. I made both dialogs open to the current spec's directory. I believe this will partially fix bug 52. In particular, it should cause the add module dialog on linux to open to the spec's directory. I need to verify this. Created attachment 13 [details]
mylyn/context/zip
|
Summary: | TLC's liveness checking in simulation mode is buggy | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bugzilla.tlaplus.net |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLC's liveness checking in simulation mode is seriously buggy. Unless Yuan volunteers to find the fix quickly (which seems unlikely), we'll have to tell users not to check liveness properties in simulation mode. If Yuan does find the fix, we will probably have to fix a bug introduced by Simon that causes TLC to produce an error trace ending with State 5: <Action line 12, col 9 to line 12, col 20 of module Test2> x = 4 State 6: Stuttering Back to state 1. Fixed |
Summary: | Model editor does not remove some error messages on user input | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
In at least one place, the Toolbox marks an error when the user starts entering a value, but doesn't remove the error marker when the user's typing removes the error. Here are the cases I've found: - Write a model specifying Init and Next, leaving Temporal Formula empty. Then select Temporal Formula. This produces an error because the Temporal Formula field is empty. However, typing into that field doesn't make the error marker go away. - In TLC Options on the Advanced Options page, choose simulation node. Then: (a) Enter a non-number. Then delete that and enter a number. Or (b) Enter a non-numeric seed or aril, then delete it or change it to a number. or else choose Model-checking mode and depth-first mode, then do the same thing with the depth field. (Incidentally, there's no reason to check those fields at all when the appropriate option isn't chosen.) - In the constant assignment section of the main model page, specify the value of a constant to be a set of model values one of which is SPECIFICATION. This produces an error marker which remains after that constant assignment is changed. This isn't a big deal, because the errors go away when the model is validated. A similar case occurs if one first enters a Temporal Formula and then chooses "Initial predicate and next-state relation". |
Summary: | Toolbox does not alert user when editing a module out of synch with file system | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
If the user edits a module that is out of synch with the file system, the toolbox does not warn the user of this. When the user saves the module, a message pops up telling the user that the module is out of synch. |
Summary: | TLA files appear grayed out when browsing for new spec and adding a module | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
Files ending in .tla appear grayed out when browsing for a new spec or adding a module. It is still possible to select the grayed out items. They were not gray when the dialogs were "Open" dialogs but are gray now that the dialogs are "Save" dialogs. This only occurs on mac OS. I spent some time trying to figure out why this occurs, but was unsuccessful. |
Summary: | Drag-and-drop in module editor? | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- |
A Mac 64-bit user requested drag-and-drop. On a Friday morning, on Windows, with cloudy weather and an outside temperature around 0, here's what I observed: - In the Toolbox module editor, if I select a piece of text and drag it, I get visual feedback that indicates I'm dragging it. But when I release the mouse button to drop it, nothing happens. - In Eclipse, drag-and-drop works when I edit a java file or an xml file, but not when I edit an html file. Simon: do you know what's supposed to happen? I don't imagine the Eclipse code contains anything so retro as documentation, but perhaps someone has posted something about drag-and-drop somewhere. This is not worth worrying about now, but we should probably look into it when we start working on the editor. |
Summary: | The toolbox program file is not being set to be executable. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 32-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
Jean-Charles reports that on two out of three of the machines he tried running the Mac 64-bit version (by double-clicking on the icon), nothing happened. He eventually found that the problem was that a file was not set to be executable--a problem that reports solving with chmod +x (macosx.cocoa.x86_64-jc.macosx.cocoa.x86_64/) toolbox.app/Contents/MacOS/toolbox I presume that the parenthesized text is supposed to indicate a super-directory of the directory in which the command was executed. I believe he found this problem with both the original version that Dan created and a later one that I made. I also have a vague recollection of this problem occurring on a different release. If this can't be fixed, we need to add a warning about it on the web page. There is an eclipse bug open on this: https://bugs.eclipse.org/bugs/show_bug.cgi?id=282260 The bug seems to be with the zip command run by the eclipse product export wizard when exporting to an archive file. The first comment claims that unchecking "Generate metadata repository" solves the problem. This is a discussion on the same topic: http://www.eclipse.org/forums/index.php?t=msg&goto=373468& I created an archive file using the eclipse product export wizard for mac 32-bit without generating a metadata repository. I tested it on the mac mini at the lab and it ran without requiring any changes in file permissions. When I produced the archive file for mac with a metadata repository, it did not run on the same mac. I believe this repository is for installing new features into a user's existing toolbox application and for running automatic updates for the toolbox. Do we need this right now? I created a zip file for linux using the export wizard without generating the metadata repository. The toolbox ran without requiring setting it to be executable. |
Summary: | Validating the model deletes the contents of MC.out | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Running validation on a model deletes the contents of MC.out. I think that the contents of that file should only be erased if TLC is going to be launched, not for validation. I'm not sure if this is a bug or not. Validation of the model changes the identifiers used for defining invariants, properties, etc, so the ids that may appear in MC.out no longer correspond to anything in MC.tla. This may be a reason to erase MC.out on validation. Anyone else have any input on this one? You are right. Running validateion in general means regeneration of the MC files. Which means that the MC.out file is obsolete. There is a slight inconsistency issue here. Running validation clears MC.out but does not clear the output in the data provider for the model. When the user closes and reopens the toolbox after validating the model, any output disappears. This could be confusing/annoying. |
Summary: | Automatically add last updated comment to end of module | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
We have the \* Generated at Thu Jan 28 12:46:04 EST 2010 comment at the end of the file. Why not also have an automatic \* Last updated ... ? |
Summary: | Load all spec modules at once | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
After loading a spec's top module, why not have an option to load all (related) other modules, to avoid having to go through the menu one by one? This was Jean-Charles' idea. A better idea would be a menu that allows you to select multiple modules to open at the same time. |
Summary: | Goto definition feature not opening new module editor when it should. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If I hold down Control and click on a symbol that's defined or declared in an extended module, the right thing happens if that module is open in a model editor. If it isn't, nothing happens because the Toolbox throws: org.eclipse.ui.PartInitException: Unable to open editor, unknown editor ID: org.lamport.tla.toolbox.TLAEditorAndPDFViewer The ID used for opening the editor was wrong. Created attachment 17 [details]
mylyn/context/zip
|
Summary: | Deleting a model does not remove output source or data provider for model | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Deleting a model does not remove the sources and data providers for that model from the tlc output source registry. If a user recreates a model with the same name, the output data from the old model appears. Deleting a model actually did remove the output source from the registry but did not remove the provider associated with that output source. It now removes the provider as well. |
Summary: | Running trace explorer does not disable running of the model checker | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Running the trace explorer should disable running of the model checker on the same model because both operations work on the same directory. |
Summary: | New spec and Add module dialogs do not open to correct directory on linux | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
On a linux ubuntu machine, the new spec browse dialog and add module dialogs open to the directory containing the toolbox executable everytime. The new spec browse dialog should open to the most recently opened directory, and the add module dialog should open to the directory of the root module. I think the add module dialog issue should have been fixed by the fix for bug 39. I think I have also fixed the new spec browse dialog for all systems. The toolbox determines in which directory it should open by finding the first directory in the following list: 1.) The directory to which the user most recently browsed from the current new spec wizard page. This is reset to null every time the user reopens that page, so this only persists through one "Add New Spec..." dialog session. 2.) The directory of the root module of the most recently opened spec. 3.) The home directory of the user. Created attachment 14 [details]
mylyn/context/zip
|
Summary: | Go-to definition/declaration does not work for non-spec modules | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Jumping to the definition/declaration for a symbol does not work properly for a module that is not extended or included in the root module. I believe the toolbox looks for symbols in the symbol table for the root module. If the user is editing a module that is not currently extended or instanced by the root module, then the toolbox will not detect the hyperlink for symbols that are not in the symbol table of the root module. If the symbol happens to be in the symbol table for the root module, then the toolbox will incorrectly jump to the definition or declaration of that symbol in the spec. Created attachment 12 [details]
mylyn/context/zip
According to Leslie, this is fixed as much as it's going to be. |
Summary: | Default for Save As browser should be Browse Folders | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
For some reason, the file browser for the Save As command has a button to choose whether or not to display the selected folder. (The Open New Module file browser doesn't have that option.) I would use the Open New Module's file browser for the Save As command as well. However, if there's some good reason for using a different browser, then the browser should by default open with the current folder shown. Currently, it opens the first time with the current folder hidden. Combined with bug 39, this is a disaster. On my machine, even when browse folders is not selected, the current folder is shown. Can you attach a screenshot of what appears on your machine when you don't have browse folders selected. The downside to using the same dialog as the Add New Module dialog is that the button to finish says "Open" instead of "Save". It's possible that this could be confusing to some users, but we decided to use the Save dialog for opening new modules and specs on Macs, so I guess its not a big deal. Alternatively, eclipse uses a completely different browser for Save As. What do you think about this dialog? |
Summary: | Feature needed for handling many specs | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The Problem: I already have too many specs to be able to find easily the one I want to open. I don't want to start deleting them because the I would lose the models I've defined. The Solution: The following two features. 1. The option of deleting a spec without deleting its .toolbox directory. Let's call that "Deleting" and the current behavior "Expunging". The simplest interface to use would be simply be to have Delete and Expunge options on the Spec Explorer menu. However, no one would figure out from the name what they mean. A more intuitive interface would be for Delete to raise a popup allowing the user to check or uncheck an "Allow spec to be reopened later" option. (I suggest that the default be that the option is checked.) Dan, Simon: which interface do you think is better? Note: This suggestions a third possible option: deleting the module files as well as the .toolbox directory. This is a bad idea because, to be useful, it should delete all the spec's modules, which is bad because (a) it's easy to forget that a spec imports a module that's used elsewhere and should be saved and (b) that option will almost always be used to delete an uncompleted spec, which is likely to be unparsable--so the Toolbox couldn't delete anything but the root module. 2. Add to the Open Spec menu the option Reopen Deleted Spec. It would produce an alphabetically sorted list of all deleted (but not expunged) specs for the user to choose from. Note that there are three reasons why that operation might fail: (a) the root module [or the .toolbox directory] no longer exists, (b) the user has created a new spec with the old name, or (c) the user has created a new spec with that root module. Of course, (a) exists when opening an existing spec. I suggest that (b) and (c) be made impossible by removing an old spec from the list if a new one is created with the same name or root file. I also suggest that when the user opens a new spec with the name or root file of an old one, he be warned and given the option of canceling. It is possible to implement feature 1 without feature 2, since the old spec can be reopened now with the Add New Spec option. Feature 2 is still useful because it might be easier to find an old spec this way than by hunting through the file system. However, we can start with just feature 1. I suggest an alternative solution consisting of two changes: 1.) Have a list of the n most recently opened specs. This could be placed at the bottom of the file menu, as in eclipse and many other programs, or could be a submenu as the Open Spec menu item currently is. 2.) Have a menu item for opening specs that brings up a dialog that looks like eclipse's dialog for opening a resource. This would be a searchable list of all specs. I now vote for Leslie's solution. I think for feature 1, the better interface is for Delete to pop up a message asking if the user wants to remove the .toolbox directory. However, I think that Delete is confusing. I think the menu item should day Remove Spec, and the popup should say "Delete models?". This makes it more clear what the operation is doing. |
Summary: | Feature needed for controlling disk space usage | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
TLC's checkpoint files can take up lots of space. The Toolbox should tell the user how much disk space his specs are using. We will need to discuss what the best interface is for doing this. Here are things that he should be able to see from the Toolbox: - For each spec, the size of the .toolbox directory. This should be a property of the spec, and it shouldn't be too hard for the user to go through all his specs in the Spec Explorer to see which ones are using lots of space. The size should also be displayed for the currently open spec, in some way that is discrete if the size is small and becomes more obvious if it's big. - For each spec, the space used be each model should be a property of that model. The space used by a model should be displayed on one of the model pages--again, discretely if it's small and loudly if it's big. There should also be a button to delete the model's checkpoint. (Is there anything else kept for the model that might be big enough to need deleting?) It would be useful if the user could see the space taken up by each model of a spec without opening each of them. (He is likely to want to find the guilty model when he sees that the spec is taking up a lot of space.) This could be done as a model property in the Spec Explorer, which provides a menu option for one that pops up an error box. |
Summary: | Minor bug in Spec Explorer: permits operations on models of unopened spec | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When a spec is open, the Spec Explorer allows the user to display the models only of the open spec. I presume that's a feature and not a bug. (It would make sense to show them for unopened specs too, with commands like Open or Clone the model disabled, but that's not worth the bother.) However, when I close the spec, I can still see that spec's models and their menu items are still active. I don't know what Open does; the console shows that the Toolbox thinks it is opening the spec and then the model, but there's no sign that it has. Clone and Delete actually perform the action (on the apparently closed spec), but then make the models invisible in the Spec Explorer. Obviously, the fix is just not to display the models of any spec in the Spec Explorer when there's no spec open. |
Summary: | Renaming a spec does not change model configuration file names | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 121 | ||
Attachments: | mylyn/context/zip |
Renaming a spec should change the configuration file names for models of the spec. Currently it does not, so renaming a spec and then attempting to open a model that existed before the renaming throws a null pointer exception and does not open the model. Fixed in HEAD Created attachment 71 [details]
mylyn/context/zip
|
Summary: | Trace Explorer getting wedged (plus minor bug) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Load the following spec: ---------- MODULE Test2 ----------- EXTENDS Naturals, TLC VARIABLE x CONSTANT C Spec == (x=0) /\ [][x'=x+1]_x Inv == x < 5 ================================= Set C to 44, check Inv as an invariant, and run the spec. On the resulting error trace, add C as the expression to print, and hit Explore. Everything is fine, and it prints 44. Go to the Constants section, change the value of C to 22 and hit Finish. BUT DO NOT SAVE THE MODEL. Go back to the Results page, open the Error Trace window, and hit Explore. It runs fine, except it's still printing 44 rather than 22. This indicates a minor bug: it should save the model before running TLC again. Now the major bug. Hit Explore again. Nothing happens. The Trace Explorer is wedged. Closing and opening it again doesn't help. The only way to unwedge it is to run the spec again, recreating the error trace from scratch. When Explore is selected, the Toolbox seems to be writing empty TE.tla and TE.tlc files. (Perhaps fixing the minor bug will prevent the major one. The trace explorer is not running because MC.out is empty. This occurs because the delegate for running the trace explorer attempts to read the trace from MC.out, but MC.out is cleared when the model is validated, but not run. I think that validation should not clear MC.out (this is bug 46). It doesn't seem wise to have the trace explorer rely on MC.out for the trace. It should write the trace to another file when the user clicks explore. Running the model checker on a model now creates a new file called MC_TE.out. The trace explorer delegate reads the trace from this file. It is not edited on validation of the model, only when TLC is run for model checking (not for trace exploration). When the trace explorer is run on an unsaved model, the model is now saved without validating. We don't want running the trace explorer to clear MC.out, which is one thing that validation does. MC_TE.out is created by attaching a sink to the process output sink for TLC runs. The class is TraceExplorerTraceSourceOutputSink. |
Summary: | Trace Explorer's TE.tla file has entries in wrong order | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The Trace Explorer reports an error if an expression to be printed contains a model value or a symbol defined in the Advanced model page's Additional Definitions section. The problem seems to be that the expressions to be printed appear too early in the TE.tla file. They should be the last things before the definition of the initial predicate and next-state relation. Created attachment 15 [details]
mylyn/context/zip
|
Summary: | Hiding of variables in Trace Explorer | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The user should be able to specify which variables are hidden (not displayed) in the Trace Explorer. (This should apply only to the view obtained by hitting Explore, not to the original trace obtained by hitting Restore.) We need to discuss what the interface should be for this before implementing the feature. Note: We were originally discussing adding the feature of changing the order in which variables are shown. That's unnecessary. The user can hide all the variables and then enter them in any order as expressions to be printed. I would add a filter (JFace Viwers support filters), which can be activated using a view-action. |
Summary: | Build custom about dialog | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | bugzilla.tlaplus.net, simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
We should build our own About dialog. Some of the aspects of the eclipse provided about dialog should not be on there, such as Installation Details. In general, the About dialog is customizable. I read somewhere about it. I suppose it is set up using the plugin_customization.ini. |
Summary: | Change order of trace explorer variables in trace viewer | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The trace explorer variables should appear before other variables in the order in which the user entered the expressions. Dan apparently fixed this months ago. |
Summary: | Constant expression evaluation shows up in User Output on linux | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- |
If the user enters expr into the evaluating constant expressions field, then the value val of expr correctly shows up in the value field, but <<!@$!@$!@$, val>> shows up in User Output. This occurs on Linux ubuntu. This also occurs on mac. |
Summary: | Clicking on module location jumps to PDF viewer sometimes | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If I have the PDF viewer tab selected in the Module Editor and I double click on a location in the coverage field, The Toolbox selects the right region in the .tla file, but it jumps to the PDF viewer rather than the .tla file viewer. Created attachment 16 [details]
mylyn/context/zip
|
Summary: | Problem with printing of invariant when it is violated. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When the toolbox reports that TLC found an invariant violated, if the invariant is multi-line, it should print the message as Invariant <newline> the text of the invariant <newline> violated. If the invariant is a single line (contains no newline characters), it should be printed as it now is: Invariant text-of-invariant violated unless the text of the invariant is too long, in which case it should be printed as Invariant text-of-invariant<newline> violated. How long is "too long" should be determined by experiment to ensure that the word "violated" is likely to be visible in the window. Note: trailing spaces and newline characters should be removed from the invariant before trying to print it. |
Summary: | Set defaults for PlusCal algorithms | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The following default settings should be made when creating new model. (The user can override them if he wants.) 1. If a spec contains the constant defaultInitValue, then it should be set to a model value. 2. If a spec contains a defined operator Spec whose level is temporal, then it should be made the temporal spec and that option chosen. Otherwise, if it contains a defined operator Init whose level is state and a defined operator Next whose level is action, then they should be made the Init/Next spec. These defaults (especially the first) will be most useful to specs that come from PlusCal algorithms. We could limit their application to files that have PlusCal algorithms. However, I suggest that we don't because the algorithm could be in an EXTENDed module. |
Summary: | Toolbox confused about directories. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | ASSIGNED --- | ||
Severity: | normal | CC: | bugzilla.tlaplus.net, simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
I opened a spec and then did a SaveAs to save the root module under a different name in the same directory. I then tried to open the root directory module. It was not listed among the choices presented in the OpenModule menu. When I clicked on AddModule, the browser came up showing the contents of the .toolbox directory. When I selected the parent directory (that is, the spec's directory) and selected the root module from it, I go an error window saying The provided module Euclid.tla is not located in the same directory as the root file. Please select the module in \Euclid Of course, the module I selected, file Euclid.tla in directory ...\Euclid, was the root file. When I closed the spec and tried to reopen it, I got various errors saying the root file didn't exist and something indicating that it was looking in the .toolbox directory. I just deleted the spec and tried opening a new spec. When I clicked on Browse, nothing happened. (Nothing appeared on the Eclipse console.) I had to close the Toolbox and restart it to be able to open a new spec. |
Summary: | Save dirty editor prior to execution - PlusCal preference and Save on Run TLC option | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
A user was confused when he edited his PlusCal file and hit translate without saving, and found that the spec he was running the model checker on hadn't changed. This suggests that there should be a Save on Translate preference option that is selected by default. We should probably also add a Translate on Save preference. And this also raises the question of what should happen if the user tries to run the model checker (or validate a model) with an unsaved spec. I suggest that the default behavior should be to raise a window asking the user if he wants to save it. Note that this should be the case when there is any unsaved module that was part of the spec the last time the spec was parsed. LL comment: A popup/dialog should ask the user if he/she wants to save the dirty editor prior to running the model checker and/or PlusCal translator. -> Generally a dirty editor should be saved before running any command on it (e.g. produce pdf, ....) |
Summary: | Make it easier to clone a model | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Now, to clone a model you have to go to the spec explorer--which means that no user will discover it by himself. And it's also inconvenient. There should be an easy way to create a clone of the model. Perhaps a Clone Model command on TLC Model Checker menu. |
Summary: | Inconvenience in using TLA2TeX | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
For some reason, Acrobat reader shows the pretty-printed version at an inconveniently large magnification. I can reduce the size, but the next time I run the pretty-printer the pdf is shown at the same large magnification. It would be nice if Acrobat could be called so it uses the magnification it had the last time--or at least the current magnification if it is already opened on the file. Alternatively (and perhaps in addition) it would be good to add a preference that specifies the magnification used when Acrobat opens the pdf file. (This would have to be specified in a sufficiently generic way--e.g., as command-line arguments--so it could be used if the user has a different program for displaying pdf files.) |
Summary: | TLC not reporting anything useful on a stack overflow | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When computing the invariant on the initial state throws a stack overflow exception (because of an infinite recursion), TLC just reports %1% While working on the initial state: %2% I'm pretty sure it used to report the stack overflow, so this bug was probably added when the error reporting was rewritten. However, the same useless error report is printed when TLC is run from a shell. I fixed this and a couple of similar cases of useless error messages. They were all caused by a code that caught an except e and then called MP.printError with e.getMessage() as an argument. However, for StackOverFlow, NullPointer, and who knows what other exceptions, e.getMessage() equals null. (How appropriate for a NullPointer exception.) This produced something like \%1\% as the message. (That should be percent 1 percent, except that the stupid editor deletes percents, so I just typed backslash-percents in the hope that it will do the right thing.) I went through and changed a bunch of e.getMessage() instances to produce e.getString() if e.getMessage() is null. I may have missed some that can cause useless error messages. If we encounter one, we can probably find it by running TLC in debug mode with breakpoints on (handled and unhandled) StackOverFlow and NullPointer exceptions. |
Summary: | Toolbox does not report violated invariant | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | Modules and model |
Created attachment 18 [details]
Modules and model
Running the Toolbox on the model for CastroLiskovBug produces an MC file that
reports an invariant failure, but the Toolbox reports that it has finished
without reporting an error (the statistics show one state left on the queue).
Can´t reproduce it. This may have been solved by fixing the TLC -tool mode bug that caused the output that TLC printed early in its execution not to be seen by the Toolbox. |
Summary: | Allow examining a locked TLC model. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When a model is locked, the user should still be able to open sections to examine them. While a model is running, I'd like to see the model--for example, how many workers it's using, what the constraint is, etc. It's a nuisance to start TLC and wonder what it's actually checking. I just realized that I can do this by cloning the model. But it would be better to make the model fully examinable, just not modifiable. If that's hard, another possibility is to allow the user to unlock the running model and then relock it after opening the necessary sections. This is dangerous, but the user would have to be pretty stupid to shoot himself in the foot. The easiest thing to do is to expand every section before disabling it when the model is locked. This could be annoying for the user. The better option and probably only slightly more difficult to implement is to disable the widgets on each page that are actually modifiable rather than entire sections. This means, for example, disabling the text box and buttons in the constants section rather than the entire section so that the user can still change the expansion state of the section but not change anything else. |
Summary: | Browse button on new spec menu not working | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When no spec is open and I select Open Spec/Add New Spec, the Browse button on the popup menu does nothing. However, if I do the same thing when a spec is open, the Browse button works fine. I can't reproduce this. Is there anything worth noting that gets printed to the console when this happens? This is either sporadic or else it occurs on Vista and not on XP. I'm afraid I don't remember if I've observed it on both systems. Nothing is printed on the console. |
Summary: | Model Editor unusable when checkpoints folder is large | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
When the checkpoints folder for a model contains a large number of files, the model editor becomes almost unusable. This occurs because the of a call to refreshLocal() in the method ModelHelper.getCheckpoints(). It refreshes the checkpoints folder, which in some case can mean refreshing the 1000s of files inside. This is slow. Based on the comments, this call to refreshLocal is sometimes necessary because the toolbox doesn't always recognize the checkpoint folder, but currently it occurs on every validation of the main model page, which is probably unnecessary. This call needs to be made more selectively. The second argument of ModelHelper.getCheckpoints(ILaunchConfiguration,boolean) is a flag indicating if the refreshLocal() should be called for the model folder. This flag is only set to true after a TLC job completes. All other calls to the getCheckpoints() method set the flag to false. This means that refreshing will not occur on every validation of the main model page. It will only occur when necessary, after TLC completes and may have created new checkpoints. Created attachment 20 [details]
mylyn/context/zip
|
Summary: | Non-automatic parsing locks UI | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | enhancement | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Launching parsing by selecting the Parse Module/Spec menu item locks the UI while auto-parse on save runs in a separate thread. I think that parsing should always be run asynchronously. |
Summary: | Add new TLC parameter Maximum Fingerprint Memory Size | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Bug Depends on: | 243 | ||
Bug Blocks: |
Yuan has added a new run-time parameter to TLC: the number of megabytes of memory to be allocated to storing the fingerprints of found states. This is specified with a new switch -fpmem ,as in -fpmem 100 The default value is 1/4 the maximum memory size that the JVW will assign to the program. (This amount apparently grows with the Maximum JVM Heap Size parameter.) This new parameter should appear both in the "How to Run" section of the Model Overview page and in the TLC model checker preferences page. The user chooses the default by leaving the text box blank. Only if the user specifies a values should the -fpmem argument be given to TLC. The parameter should be labeled Maximum FingerPrint Memory size in MB. The Toolbox should allow the new parameter to be set only to a value less than the value of Maximum JVM Heap Size. (And conversely, the JVM heap size should not be settable to less than or equal to the new parameter.) |
Summary: | trace explorer doesn't work on trace of length 1 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
You can create such an error trace by checking deadlock in a spec that deadlocks in the initial state. Why would I want to explore such an error trace? Because it's a convenient way to evaluate expressions on a particular state. (Perhaps that indicates a missing feature.) This now appears to work. I presume Dan fixed it without marking the bug report as resolved. |
Summary: | Bad behavior of model-editor page with long Invariants and Properties. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The display of Invariants and Properties on the Model Overview Page does weird and unsatisfying things when the one-line displayed entries get too wide. In particular, the width of their column grows to accommodate the widest line, and cannot be shrunk even when the wide lines are eliminated--except by closing and reopening the model. As I recall, there are serious problems trying to fix this with the Eclipse primitives. So, I suggest the following change to ameliorate the problem: On the displayed line, replace each sequence of spaces with a single space. I suggest preventing the widgets from expanding and adding a scroll bar. |
Summary: | Toolbox crashed by out-of-memory exception | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | the files |
I was running a TLC model that, according to the log entry pasted below, ran TLC out of memory. (Sorry for doing it this way, but I couldn't find the switch in the 747 cockpit that allows me to attach something to the bug report--though I'm sure I've stumbled upon it before.) It would be nice if this could be prevented from crashing the Toolbox, but would simply cause it to report a TLC error. Of course, if TLC running out of memory causes the Toolbox to run out of memory as well, this is likely to be impossible. But I don't see why this should happen. (Of course, I have a lot of trouble seeing why all the ways computer programs fail should happen.) eclipse.buildId=unknown java.version=1.6.0_11 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data C:\users\lamport\tla\newtools\tla2-inria/../runtime-standalone.product -dev file:C:/users/lamport/tla/newtools/tla2-inria/.metadata/.plugins/org.eclipse.pde.core/standalone.product/dev.properties -os win32 -ws win32 -arch x86 !ENTRY org.eclipse.osgi 2 0 2010-04-22 09:21:38.625 !MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists: !SUBENTRY 1 org.eclipse.osgi 2 0 2010-04-22 09:21:38.625 !MESSAGE Bundle org.eclipse.jdt.launching.macosx_3.2.0.v20090527 [337] was not resolved. !SUBENTRY 2 org.eclipse.jdt.launching.macosx 2 0 2010-04-22 09:21:38.625 !MESSAGE Platform filter did not match: (osgi.os=macosx) !ENTRY org.eclipse.core.resources 2 10035 2010-04-22 09:21:39.750 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. !ENTRY org.eclipse.ui 2 0 2010-04-22 09:21:40.562 !MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points. !SUBENTRY 1 org.eclipse.ui 2 0 2010-04-22 09:21:40.562 !MESSAGE Commands should really have a category: plug-in='org.lamport.tla.toolbox.tool.prover.ui', id='org.lamport.tla.toolbox.tool.prover.ui.checkStep.delegate', categoryId='org.eclipse.debug.ui.category.run' !ENTRY org.eclipse.ui 4 4 2010-04-22 09:23:52.814 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2010-04-22 09:23:52.814 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.eclipse.ui 4 4 2010-04-22 09:24:31.268 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2010-04-22 09:24:31.268 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.eclipse.ui 4 4 2010-04-22 12:12:57.928 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2010-04-22 12:12:58.100 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.eclipse.ui 4 4 2010-04-22 12:13:51.304 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2010-04-22 12:13:51.319 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2010-04-23 23:14:47.975 !MESSAGE Error writing the TLC process output file for ByzPaxosConsensus___TinyModel.launch !STACK 1 org.eclipse.core.runtime.CoreException: Could not write file: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC.out. at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:386) at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:956) at org.eclipse.core.internal.resources.File.internalSetContents(File.java:320) at org.eclipse.core.internal.resources.File.appendContents(File.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink$1.run(FileProcessOutputSink.java:47) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink.appendText(FileProcessOutputSink.java:43) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) Caused by: java.io.FileNotFoundException: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC.out (The process cannot access the file because it is being used by another process) at java.io.FileOutputStream.openAppend(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:177) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:377) ... 15 more !SUBENTRY 1 org.eclipse.core.filesystem 4 272 2010-04-23 23:14:49.928 !MESSAGE Could not write file: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC.out. !STACK 0 java.io.FileNotFoundException: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC.out (The process cannot access the file because it is being used by another process) at java.io.FileOutputStream.openAppend(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:177) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:377) at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:956) at org.eclipse.core.internal.resources.File.internalSetContents(File.java:320) at org.eclipse.core.internal.resources.File.appendContents(File.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink$1.run(FileProcessOutputSink.java:47) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink.appendText(FileProcessOutputSink.java:43) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2010-04-23 23:22:10.093 !MESSAGE Error writing the TLC process output file for ByzPaxosConsensus___TinyModel.launch !STACK 1 org.eclipse.core.runtime.CoreException: Could not write file: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC_TE.out. at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:386) at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:956) at org.eclipse.core.internal.resources.File.internalSetContents(File.java:320) at org.eclipse.core.internal.resources.File.appendContents(File.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink$1.run(FileProcessOutputSink.java:47) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink.appendText(FileProcessOutputSink.java:43) at org.lamport.tla.toolbox.tool.tlc.output.internal.TraceExplorerTraceSourceOutputSink.appendText(TraceExplorerTraceSourceOutputSink.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) Caused by: java.io.FileNotFoundException: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC_TE.out (The process cannot access the file because it is being used by another process) at java.io.FileOutputStream.openAppend(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:177) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:377) ... 16 more !SUBENTRY 1 org.eclipse.core.filesystem 4 272 2010-04-23 23:22:10.093 !MESSAGE Could not write file: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC_TE.out. !STACK 0 java.io.FileNotFoundException: C:\users\lamport\papers\paxos\simple\byztla\ByzPaxosConsensus.toolbox\TinyModel\MC_TE.out (The process cannot access the file because it is being used by another process) at java.io.FileOutputStream.openAppend(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:177) at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:377) at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:956) at org.eclipse.core.internal.resources.File.internalSetContents(File.java:320) at org.eclipse.core.internal.resources.File.appendContents(File.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink$1.run(FileProcessOutputSink.java:47) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800) at org.lamport.tla.toolbox.tool.tlc.output.internal.FileProcessOutputSink.appendText(FileProcessOutputSink.java:43) at org.lamport.tla.toolbox.tool.tlc.output.internal.TraceExplorerTraceSourceOutputSink.appendText(TraceExplorerTraceSourceOutputSink.java:53) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.eclipse.ui 4 0 2010-04-24 11:32:33.287 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) at java.lang.StringBuffer.append(StringBuffer.java:306) at org.eclipse.ui.editors.text.StorageDocumentProvider.setDocumentContent(StorageDocumentProvider.java:144) at org.eclipse.ui.editors.text.FileDocumentProvider.setDocumentContent(FileDocumentProvider.java:424) at org.eclipse.ui.editors.text.FileDocumentProvider.handleElementContentChanged(FileDocumentProvider.java:830) at org.eclipse.ui.editors.text.FileDocumentProvider$2.execute(FileDocumentProvider.java:274) at org.eclipse.ui.editors.text.FileDocumentProvider$SafeChange.run(FileDocumentProvider.java:163) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) !ENTRY org.eclipse.ui 4 0 2010-04-24 11:32:38.444 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) at java.lang.StringBuffer.append(StringBuffer.java:306) at org.eclipse.ui.editors.text.StorageDocumentProvider.setDocumentContent(StorageDocumentProvider.java:144) at org.eclipse.ui.editors.text.FileDocumentProvider.setDocumentContent(FileDocumentProvider.java:424) at org.eclipse.ui.editors.text.FileDocumentProvider.handleElementContentChanged(FileDocumentProvider.java:830) at org.eclipse.ui.editors.text.FileDocumentProvider$2.execute(FileDocumentProvider.java:274) at org.eclipse.ui.editors.text.FileDocumentProvider$SafeChange.run(FileDocumentProvider.java:163) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) !ENTRY org.eclipse.ui 4 0 2010-04-24 11:32:43.319 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) at java.lang.StringBuffer.append(StringBuffer.java:306) at org.eclipse.ui.editors.text.StorageDocumentProvider.setDocumentContent(StorageDocumentProvider.java:144) at org.eclipse.ui.editors.text.FileDocumentProvider.setDocumentContent(FileDocumentProvider.java:424) at org.eclipse.ui.editors.text.FileDocumentProvider.handleElementContentChanged(FileDocumentProvider.java:830) at org.eclipse.ui.editors.text.FileDocumentProvider$2.execute(FileDocumentProvider.java:274) at org.eclipse.ui.editors.text.FileDocumentProvider$SafeChange.run(FileDocumentProvider.java:163) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) !ENTRY org.eclipse.ui 4 0 2010-04-24 11:36:25.073 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) at java.lang.StringBuffer.append(StringBuffer.java:306) at org.eclipse.ui.editors.text.StorageDocumentProvider.setDocumentContent(StorageDocumentProvider.java:144) at org.eclipse.ui.editors.text.FileDocumentProvider.setDocumentContent(FileDocumentProvider.java:424) at org.eclipse.ui.editors.text.FileDocumentProvider.handleElementContentChanged(FileDocumentProvider.java:830) at org.eclipse.ui.editors.text.FileDocumentProvider$2.execute(FileDocumentProvider.java:274) at org.eclipse.ui.editors.text.FileDocumentProvider$SafeChange.run(FileDocumentProvider.java:163) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) !ENTRY org.eclipse.ui 4 0 2010-04-24 11:36:30.011 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:36:34.026 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:36:38.105 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:36:42.120 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:40:27.937 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:40:32.047 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:40:36.078 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:40:40.109 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:40:44.172 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:43:47.566 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:43:51.613 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:43:55.613 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:44:30.285 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:46:51.273 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space !ENTRY org.eclipse.ui 4 0 2010-04-24 11:46:55.351 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Caused by: java.lang.OutOfMemoryError: Java heap space The first few exceptions are FileNotFoundExceptions for the two output files MC_TE.out and MC.out. The message claims that another process is using these files. I tried running TLC on the same model from two different instances of the toolbox, but this did not produce any Java exceptions. I don't know what other process would be accessing those files. Those file not found exceptions don't seem to be relevant, since the toolbox did start the model and TLC ran for about two days before the out-of-memory exception killed it. I'm probably missing something, but what makes you think that TLC ran out of memory? I see that the Toolbox ran out of memory. Created attachment 19 [details]
the files
I think I finally figured out how to attach this.
TLC was not running, so I assumed that it had crashed. Would the Toolbox running out of memory stop TLC? Anyway, the TLC run started at 14:26 on 22 April. The last progress report was at 11:46:20 on 24 April, which was also the time of the last checkpoint. I have no idea why the Toolbox should have been writing ByzPaxosConsensus___TinyModel.launch on 23 April. Anyway, I finally saw where to add attachments, so I attached the files. (I could swear that section was not there when I created the report.) There are generally two independent happenings. I think these are dependent now due to a bug in toolbox. These are things that I know of: - A stack overflow in TLC produces a stack overflow of Toolbox - An out-of-memory in TLC should not crash the toolbox. At least that was one of the design issues. I don't know how it behaves now, but this is easy to simulate. - Toolbox is writing an incomming stream to a file. I assume it will fail, after the file size exceeds 2GB. This could be the error of FileNotFound. Windows is not very smart reporting errors. If the file can not be accessed it reports that the reason is that it is hold by another process. - The out-of-memory of Toolbox seems to be produced by the Toolbox itself. This can be the similar problem as the previous. Trying to display a content of the file that is 2GB big can be problematic. We spoke about a kind of sliding-window mechanism for boths: file and display with Leslie, but I actually never implemented it. There is no file larger than 5MB in the TinyModel directory, where I presume it should be. In fact, the directory containing all the related specs and their models is only about 35MB. I'd be curious to know why a stack overflow in TLC produces a stack overflow in a separate process. However, that's very unlikely to be the cause of the problem. I've never seen a TLC stack overflow that was not produced by a problem with the spec (and properly caught by TLC). I just restarted the model from the checkpoint that was created just before the Toolbox crashed; it has been happily running for about 5 minutes. However, there does seem to be a memory problem with the Toolbox. I just noticed that, right before I closed it, the Toolbox was using over 700MB of memory. I restarted the Toolbox this morning and have not been doing much of anything with it. So, there must be a memory leak in the code. I found it interesting, that a 5 MB file is being produced in 2 days of running TLC. As far as I know TLC writes log. In two days it should have produced tonns of logs.. So again, my comments to your bug descriptions are: -> I was running a TLC model that, according to the log entry pasted below, ran TLC out of memory. This is wrong. The log says that there was a out-of-memory in a toolbox, not in TLA. -> Of course, if TLC running out of memory causes the Toolbox to run out of memory as well, this is likely to be impossible. This is not the case. Simon and I talked about the toolbox's parsing and storing of TLC's output as one source of memory leak. The following steps are taken to parse TLC's output: 1.) Create an empty document (an eclipse construct that provides support for editing and partitioning text, among other things). 2.) When new output from TLC arrives, append it to this document. 3.) Using the eclipse document partitioning framework, this is partitioned into regions where each region is either a start message tag, an end message tag, or a character that is not in a start or end message tag. 4.) The parser is notified each time the partitioning of the document changes. It uses the positions of the new partitions to create the appropriate data types to store for any interested listeners. I think that at least one problem is that the document containing all of TLC's output is stored as long as TLC is running. After TLC has been running for 2 weeks, the document created in step 1 will still contain @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ and the associated partitions and other data types used by eclipse to maintain a document, even though the information contained in this part of the message has been stored in another data type in step 4. This redundant storage is unnecessary, and takes up a lot of memory. Once the partitioning for a portion of the document has been used to generate the appropriate data type in step 4, these partitions, along with the portion of the document to which they correspond, are no longer needed. Simon and I also talked about the caching of the data type created in step 4. All instances of this data type created by any run of TLC since the Toolbox was last started are held in memory. This doesn't seem to be a large percentage of the toolbox heap size, so it may not be worth worrying about right now. To test this, I ran TLC for about 12 hours, and then took a heap dump. The total heap size was about 250MB. Objects that I'm pretty sure relate to documents and partitioning of TLC's output seem to take up at least 100MB, while objects created in step 4 seem to take up less than 1 MB. The formatting of my last comment is not what I wanted. Try selecting "View Unformatted Text" in the menu to the right of the comment title to see what I actually intended. Compounding the problem is the fact that instances of BroadcastStreamListener (which broadcast TLC's output stream to interested sinks) are never removed as listeners to TLC's output stream. This means that all sinks, all parsers, and thus all documents containing output from any run of TLC since the toolbox was last started are kept in memory. Further data: just running the model overnight, the Toolbox's memory use grew from 200MB to close to 700MB. A quick estimate indicates that during that time, the Toolbox received 1000 messages, each about 100 bytes long, for a total of about 100KB. If that's the cause of the memory growth, that means the Toolbox is using 5KB of storage for each byte of input it receives. I suppose that's possible with modern software. In any case, this needs to be fixed. There's another source of memory leak. FileDocumentProviders are used throughout the toolbox code. They are connected to file editor input to provide convenient access to the file contents. Connecting them to a file editor input also causes them to register as a resource change listener in order to synchronize with changes to the file. When no longer needed, the disconnect() method should be called so that the file document providers remove themselves as resource change listeners. However, this is never done in the toolbox, so references remain to these providers so that they are never removed from the toolbox's heap. After running TLC for two days, FileDocumentProviders were responsible for approximately 40% of the heap space. Another 40% seems to be occupied by objects related to what I explained in comment 11. I've fixed the two memory leaks that I noticed, so this is at least partially fixed. |
Summary: | Renumber proof command does not work for non theorem nodes | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Dan Ricketts <daniel.bmore.ricketts> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The renumber proof command does not work if the proof contains steps that cannot have proofs (use/hide, instance, def). SANY does not seem to provide a way to get the location of the step number for these nodes, so this might motivate a change to SANY. |
Summary: | Goto Declaration not working with subexpression names | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The Goto Declaration command does nothing with a subexpression name like Foo!2!(x). The best one can do is to go to the definition of Foo if the user is pointing at the "Foo". This will be difficult to fix and will require modifying how TLAHyperlinkDector.detectHyperlinks parses the region of the module being pointed at to obtain the operator name to look up. Note that in Foo!Bar!<<!(x), the symbol to find is Foo!Bar, the "!<<!(x)" being a subexpression of that symbol's definition. Since very few people will notice that this case isn't handled, fixing it has low priority. All known bugs in Goto Declaration, hyperlinking, and Show Uses deemed worth fixing have been fixed. The only known bug is that the Toolbox may not find the symbol if you point at a space in the symbol name, as in "Foo ! Bar". One perhaps surprising feature is that it will go to the definition or declaration of a symbol if that symbol is not serving as the symbol--in particular, if it appears in a comment or at the "<" or ">" in something like "<3>". (But it works correctly for "<3>1".) |
Summary: | Toolbox will not raise TLAPM console if TLC console has been raised. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Open a spec and run a TLC model on it, producing output on the TLC Console. Then run the prover. Clicking on the TLAPM Console raises the TLC Console. There seems to be no way to get rid of it except to close the Toolbox. Note: There should be a TLAPS Component as a bug attribute, but I don't know how to add one. There is a way to open the TLAPS console when the TLC console is already open. One of the buttons at the top of the console allows you to switch between consoles. It has some sort of drop down menu with the console options. The TLAPS menu item to open the console should probably open the TLAPS console always, but I considered it a low priority because I didn't expect users to ever use the TLAPS console. Support to separate consoles would require support in Eclipse. Unless this is going to be implemented there, this bug is unlikely to be addressed. TODO open bug a eclipse.org. Trivial workaround by selecting the console instance on the console selector icon. |
Summary: | Goto Declaration (F3), Show Declaration (F5), and Show Uses (F6) don't work on subexpression names | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Goto Declaration (F3) and Show Declaration (F5) don't work if the cursor is on a symbol in a PICK or CASE statement of a proof. They need to be tested to see if there are other places as well where they don't work. This appears to have been a misdiagnosis. The problem seems to be caused when selecting a name that occurs in a subexpression name, as in Foo(a)!1!(c). I fixed Show Uses so that, when searching for uses of a defined symbol Foo, it marks all names of subexpressions of Foo. For example, it will mark the Foo in Foo!1!(a+b). Goto Declaration and Show Uses still don't work if the cursor is at a symbol that is part of the name of a subexpression of the definitiion--for example, if the cursor is at the Foo in Foo!1!(a+b). It doesn't seem worth fixing now. Instead, it should be fixed as part of a re-implementation of EditorUtil.getTokenAt so it works purely on what's in the buffer without using the parse tree. Note: Goto Declaration, etc. don't work on a symbol formed with a parameterized instantiation--e.g., I(exp)!Foo. All known bugs in Goto Declaration, hyperlinking, and Show Uses deemed worth fixing have been fixed. The only known bug is that the Toolbox may not find the symbol if you point at a space in the symbol name, as in "Foo ! Bar". One perhaps surprising feature is that it will go to the definition or declaration of a symbol if that symbol is not serving as the symbol--in particular, if it appears in a comment or at the "<" or ">" in something like "<3>". (But it works correctly for "<3>1".) |
Summary: | Show Uses (F6) not working. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
I don't know what happened, but it's perhaps not a coincidence that this appeared after I partiallly fixed bug 88. Bug fixed. The Show Uses command still has the following minor bug. When Foo is defined in module M, which is instantiated by I == INSTANCE M, then when showing uses of I!Foo, if the use appears in a subexpression name like I!Foo!2, then just the "I" rather than the "I!Foo" is marked. This is pretty harmless and is probably not worth fixing. |
Summary: | Performance problem reading any non-trivial amount of TLC output | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Attachments: |
Test_Copy.toolbox.zip
spec |
It takes the Toolbox much too long to parse and display TLC output when it gets long. The only real examples I know of in which this is a problem are long uniprocess (sequential) PlusCal algorithms. An example that illustrates the problem is in the module FindOp.tla appended to the TokenSpec class. There are two kinds of output involved: - Error traces. It can take effectively forever for TLC to process a long error trace. Putting an "assert FALSE" statement at the end of the algorithm in FindOp.tla produces an error traces with about 1400 states. I have no idea how long it would take the Toolbox to process it, but I would guess it would be at least on the order of hours. - Progress information. I believe that it takes TLC about 20 seconds to process each progress report of FindOp.tla. (TLC completes in about a second, so the problem is only in the final report.) I believe that each progress report is about 1000 lines, where each line of output is a separate message. Experimentation suggests that the majority of time taken processing the error trace is in displaying it. However, a significant fraction (perhaps 1/3) is spent parsing the TLC output. There seems to be no good reason for that--especially since the entire trace is just a single TLC message. The parsing of TLC output needs to be completely rewritten so it is fast. It's likely that displaying the trace cannot be made fast enough, in which case the user can be warned that the trace is long and given the option of displaying just a part of it. When parsing the performance information is fast, we can figure out if displaying it is slow enough to require that something be done about it. I just discovered a much more serious example of what appears to be the same problem. If you run in simulation mode a simple program with a Print statement that produces output, the Toolbox seems to be swamped by the output and displays no user output on the Results page. Fortunately, aborting the run stops everything, so the user doesn't have to wait for however many hours it takes the Toolbox to parse the output. Unfortunately, that gives the user no indication that any output was produced. I/O should be slow enough that the Toolbox should be able to read a stream of input and display it on the screen without falling behind. It should also take the Toolbox just nanoseconds per line to discover that it's not a message and should therefore go to the user output window. So, fixing the Toolbox's handling of TLC output should fix this problem. I just discovered that when you run TLC in model-checking mode and the Toolbox gets behind in printing user output, it doesn't print the remaining output when TLC stops normally. (It probably also doesn't if TLC stops because of an error.) Created attachment 37 [details]
Test_Copy.toolbox.zip
To run it with the Toolbox, unzip the Test_Copy.toolbox directory, put
it in the same directory as Test.tla, and open a spec named Test_Copy
with root file Test.tla. The models N=12, N=18, etc. are the models
that display the behavior with different values of the parameter N,
which is the number of states in the error trace. (Ignore the other
models.)
L.
Created attachment 38 [details]
spec
|
Summary: | Sany error not being reported by the toolbox. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
The following module produces a SANY error that is not reported by the Toolbox. ---- MODULE Test -------- Foo == 1 THEOREM TRUE <1> QED BY DEF Foo.x' ================ Fixed by change to ModuleParserLauncher.findLineAndColumn. |
Summary: | Launch Prover command does not check if module has been saved. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
As it says, the Launch Prover command (Ctl+G Ctl+P) does not check if the module has been saved. It should. Fixed by copying some code from the other commands. |
Summary: | Characters produced by alt + number key cannot be entered from keyboard | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Vidar <vidar_slatten> |
Component: | TLA+ Editor | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 32-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
I cannot type |, [ or ] into the editor when on Mac. It works fine on Windows. Seems the problem has to do with any character that is produced by holding down the alt key then pressing a number key. Pressing shift + alt + number key works, though. I have a Norwegian keyboard, in case that has something to do with it. I have tried changing the input source to US keyboard, but the editor still does not register characters typed by holding alt + number key. I am able to copy paste these characters from existing specifications or other programs, so I can work around it. Versions: OS: Snow Leopard Java: 1.6 64-bit TLA+ toolbox: 1.2.1 The alt+number keys are currently bound to commands that do nothing. The commands may eventually do something, but probably not for a while. To remove the bindings, go to File/Preferences/Keys and type Prefix into where it says "type filter text". This will show you all those bindings, which you can then remove with the Unbind Command button. In the next release, those commands will be rebound to shift+alt+ctl+number. (I prefer to do this rather than completely removing the commands because it will make it a little easier if we decide to make them do something.) I hope that no system uses these key combinations. |
Summary: | Toolbox can't deal with long prover console output. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
On a long prover job, the Toolbox slows to a crawl and produces errors. (It's hard to read the "problem occurred" window, since the Toolbox can't paint its windows, but it seems to be trying to report a Java heap error.) It appears to be due to inefficient handling of the console output--perhaps the same problem that occurs when TLC produces a lot of console output. Here's what the Eclipse log shows: Exception in thread "Output Stream Monitor" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuffer.append(StringBuffer.java:224) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:154) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) Eclipse uses a class called OutputStreamMonitor to wrap a process's output streams. By default the OutputStreamMonitor saves the stream in a StringBuffer. Since we currently don't use any of this saved stream, the StringBuffer is useless. To fix this, I committed some code that turns off buffering. This needs to be tested. It looks like Dan's fix has solved the problem, though I don't know how to test it thoroughly enough to make sure. I'll close this report and reopen it if I encounter the problem again. |
Summary: | Toolbox displaying only a tiny piece of a TLC error message (and missing feature) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
When using the Evaluate Constant Expression feature to evaluate the expression
<<TestObj \in Object,
ReachableFrom(TestObj, TestHeap)
>>
TLC produced the error message:
Error: Evaluating assumption line 73, col 8 to line 73, col 66 of module
MC failed.
Attempted to apply function:
(id1 :> [f1 |-> id2, f2 |-> <<v1, id3>>] @@ id2
:> <<>> @@ id3 :> <<>>)
to argument {}, which is not in the domain of the function.
but the Toolbox just displayed this in the top field of the TLC Errors
window
The `Evaluate Constant Expression’ section’s evaluation
to argument {}, which is not in the domain of the function.
Since Bugzilla does not provide any way to attach input to the bug
report that I've been able to find (though I seem to recall that there
is some way to do it that is obvious to anyone who has a PhD in
Bugzilla), I checked the example into the
tla/trunk/tla2-inria/general/bug-11-03-10 directory. The root file is
Promises.tla and it is Model_1 (the only model).
When I tried to open a copy of the spec in
the Toolbox, the Toolbox did not find the model, which is Model_1, even
though the Model_1 directory was inside the .toolbox directory. (I have
been unable to reproduce this problem with a fresh spec.) If that
happens, to recreate the bug, it's necessary to create a new model using
all the model info inside the Model_1/MC.{tla,cfg} files. Here's how
to do it.
What is the Model
----------------
EventualType : make model value
Type: ordinary value:
{EventualType}
Id: set of model values
{id1, id2, id3}
Exception: set of model values
{exc1, exc2}
Value: set of model values
{v1, v2}
Field: ordinary value:
{"type", "f1", "f2"}
Definition Overrides:
--------------------
Nat == 0..5
Seq(S) == UNION { [1..n -> S] : n \in 0..2 }
Additional Definitions:
----------------------
TestHeap ==
(id1 :> [ f1 |-> id2,
f2 |-> <<v1, id3>>])
@@
(id2 :> << >>)
@@
(id3 :> << >>)
TestObj ==
[type |-> EventualType,
f1 |-> id1]
Evaluate Constant Expression:
-----------------------------
<<TestObj \in Object,
ReachableFrom(TestObj, TestHeap)
>>
Running the model should then produce the error.
I stupidly just realized that the problem is probably caused by the error being in the MC module. The Toolbox should be deleting just the location information from the message, but it's deleting too much. The Toolbox should actually translate the location into a location in the Model. This is a missing feature, which was not mentioned in the Bugzilla database. It now is. |
Summary: | Print output not shown in Evaluate Constant Expression | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
If evaluating the constant expression in Evaluate Constant Expression evaluates a Print or PrintT statement, the output printed by TLC does not appear in the User Output area. I wasn't finished with the description when it was submitted (I think by Eclipse, but perhaps I accidentally hit the Submit button). First of all, this is a problem because it makes it impossible to use Evaluate Constant Expression to debug constant operators with Print statements. Here's an example that explains what's triggering the bug. In the spec, put Foo(x) == IF PrintT("PrintFoo") THEN "Foo" ELSE 0 Bar(x) == IF PrintT("PrintBar") THEN "Bar" ELSE 0 ASSUME PrintT(Bar(1)) (We give Foo and Bar arguments, otherwise TLC will evaluate them before it does any execution of the spec.) Note that evaluating the assumption prints "PrintBar" and "Bar". Now, put Foo(1) as the expression in Evaluate Constant Expression. This essentially puts ASSUME <<"xxxx", Foo(1)>> into the MC.tla file, where xxxx is actually a less readable string. Evaluating this expression prints "PrintFoo" and <<"xxxx", "Foo">>. The User Output field should show "PrintBar", "Bar", and "PrintFoo", since the Toolbox grabs the <<"xxxx", "Foo">> and puts "Foo" in the Value area of the Evaluate Constant Expression section. However, it doesn't print the "PrintFoo" where it should. If you run TLC on the MC file outside the Toolbox, you'll see that the problem is that the "PrintFoo" is printed before the "Starting... (2011-...)" line, while all the other stuff is printed afterwards. Apparently, the Toolbox doesn't look for user output until after that "Starting..." line. So, the bug is not in the Toolbox itself, but rather in the placement of the code in TLC that prints the "Starting..." line. I moved the appropriate TLC code and it seems to have fixed the problem. |
Summary: | Toolbox not reporting invariant violation | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: |
Source file
The MC.out file guess what you'll never guess ... |
First of all let me report a Bugzilla bug. There is no place to attach a file to this bug report. However, I observed that on Bug 95, there is now a place for attachments. So apparently, Bugzilla creates the section for attachments only after the Bug is submitted. Assuming that doesn't just happen on the ides of March under a 1/4 full moon when it's raining, I will submit this and then try to attach the necessary files. Now for this bug. TLC found an invariant violation, but the Toolbox didn't report it or any other information about the run because of an array out of bounds exception. Below is what the Eclipse console shows. I will attach the spec and the various MC* files, which show what TLC produced. footFileName = C:\lamport\microsoft\spec-examples\joe_duffy\Promises2.tla Writing files to: Model_1\ ---- Skipping resource: Model_1/MC.tla Skipping resource: Model_1/Promises2.tla ---- entering removeModelProblemMarkers() on Promises2___Model_1 with markerType set to org.lamport.tla.toolbox.tlc.modelErrorSANY Final check for the modelcheck mode. The result of the check is true --------------------------- TLC ARGUMENTS: --------------------------- -checkpoint 3 -config MC.cfg -coverage 3 -workers 1 -tool -metadir C:\lamport\microsoft\spec-examples\joe_duffy\Promises2.toolbox\Model_1 MC --------------------------- END TLC ARGUMENTS --------------------------- entering removeModelProblemMarkers() on Promises2___Model_1 with markerType set to org.lamport.tla.toolbox.tlc.modelErrorTLC TLCOutputSourceRegistry for model checking maintains 1 sources. The source Promises2___Model_1.launch has 4 prio and 1 listeners !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-03-21 19:04:03.564 !MESSAGE Error broadcasting the message !STACK 0 java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0 at java.util.Vector.get(Vector.java:694) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.createError(TLCModelLaunchDataProvider.java:586) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:273) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) ---- Skipping resource: Model_1/MC.tla ---- Job 'TLC run for Model_1' terminated with status: { Done } ---- ---- Created attachment 21 [details]
Source file
Created attachment 22 [details]
The MC.out file
Created attachment 23 [details]
guess what
Created attachment 24 [details]
you'll never guess
Created attachment 25 [details]
...
How nice, the attached files are all comments. Very helpful. But they're now there. After carefully documenting all this, I tried running under the debugger and the problem didn't occur. I then restarted the Toolbox and tried again, and again it didn't occur. I'll resolve this as "Won't Fix", since there are probably more important things to worry about than why that exception occurred. |
Summary: | Toolbox incorrectly reports which invariant is violated if some members of the list of invariants are unchecked | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | Screenshot of unselected, yet checked invariant |
Toolbox incorrectly reports which invariant is violated if some members of the list of invariants are unchecked Running Version 1.2.1 of 29 September 2010 (32-bit), on Windows 7 (64-bit). First bug: I have a list of 3 invariants to be checked (in the Model Overview page). When all of them are enabled (checked), everything seems to work fine. I temporarily unchecked the second (middle) invariant in the list (first time I’ve used this feature). I ran the model-checker, knowing that the 3rd invariant in the list would be violated by my current spec/model. The toolbox incorrectly reported that the second (unchecked) invariant was the one that was violated. Examining the TLC error trace, I am sure that it was really the 3rd invariant that was violated. i.e. Model checking appears to have been done correctly, but the toolbox incorrectly reported which invariant was violated. Presumably due to a bug in the handling of unchecked invariants. Second related bug: After the above problem, I completely removed the middle (unchecked) invariant, by clicking the 'Remove' button. I re-ran the model checker. The toolbox again incorrectly reported that the (now removed) second invariant was the one that was violated. I then removed all of the invariants (leaving an empty list). I added back one invariant -- the one I knew would fail. Again the toolbox reported that the wrong invariant was violated -- it reported that the original 1st invariant was violated, when that invariant didn't even appear in the list anymore. I was able to reproduce this bug on my Windows 7 64-bit machine with a 4-core Intel Xeon CPU. It does not occur on my Vista 32-bit 2-core machine. Also, when I tried to reproduce the bug again on my 64-bit machine, it didn't occur. The bug is in the Toolbox, not in TLC. It smells like a concurrency bug--especially since I have observed that the 64-bit machine seems to be good at revealing concurrency bugs, probably because it uses a weaker memory model than the 32-bit one. The code that finds and reads the TLC output is too complicated and requires too much knowledge of the Eclipse infrastructure for me to understand. Another incarnation is that TLC checks *no* invariant even though a (single one) is checked in the model editor. I have yet to reproduce this though. Created attachment 198 [details]
Screenshot of unselected, yet checked invariant
I got bitten by this again yesterday. The Toolbox checked the TypeOK
invariant even though it wasn't selected (see screenshot). I wonder if
it even checked the selected ones.
http://tlaplus.codeplex.com/SourceControl/changeset/b00cb4336eeed3fd82cfd0d8170bc57c305a40e2 causes the Toolbox to properly lock the workspace before it writes files to launch the model checker. This makes sure that it can't interfer with other background operations that write to files. I hope that this change addresses this bug too. Below is an updated stacktrace with current line numbers: Negative seek offset at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:212) at tlc2.tool.liveness.DiskGraph.getNode(DiskGraph.java:169) at tlc2.tool.liveness.DiskGraph.getPath(DiskGraph.java:310) at tlc2.tool.liveness.LiveWorker.printTrace(LiveWorker.java:603) at tlc2.tool.liveness.LiveWorker.checkComponent(LiveWorker.java:373) at tlc2.tool.liveness.LiveWorker.checkSccs(LiveWorker.java:163) at tlc2.tool.liveness.LiveWorker.run(LiveWorker.java:613) Fixed with 1.5.0 The fix in 1.5.0 turns out to be incomplete. Thus, a workaround has been put in place [1] that caches the invariant list upon model checking start-up as fall-back. [1] https://tlaplus.codeplex.com/SourceControl/changeset/72a66a7ecd246018aaf5c1bfbe89dbe2280cb46d |
Summary: | Toolbox in confused state after system restart during model-checking | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- |
Running Version 1.2.1 of 29 September 2010 (32-bit) on Windows 7 Enterprise 64-bit, on a 4-proc 4GB ThinkPad laptop. Sequence of events: 1. TLC was checking a model. (I can't remember if it was doing it in the background.) 2. I had to do a system restart to install an update of some unrelated software (Adobe Reader). 3. After the restart I ran the toolbox and found that: - TLC is not running (not surprising, as I haven't restarted it.) - The Model Overview tab says "(model checking is in progress)" - The "How to run" options are all greyed out. The "Checkpoint Id" and "Checkpoint Size" are populated with reasonable values, but they are greyed-out. - The "Model Checking Results" tab says "Current Status: Not running" and "Errors detected: No Errors". The "State space progress" box lists the last few state reports (from before the system restart) - The 'Stop model checker' button (small red square) was enabled, but had no apparent effect when clicked. Note: I did previously stop this TLC run, and restart from a checkpoint, without any problems. But I didn't do a system-restart that time. I worked around this by cloning the model. So it's not a severe problem, just confusing at first. The cloned model initially had 1 error, that there was no checkpoint state. I realized that this was because the 'restart from checkpoint' box was already checked for the clone (it was also checked on the original model). I unchecked the box, and could then run TLC as normal. This is a known behavior, documented in the Help pages, for which the Toolbox provides the repair menu item for a model in the spec explorer. |
Summary: | Absolute path names in .toolbox directory files prevents opening existing specs that have been moved. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Dan Ricketts <daniel.bmore.ricketts> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- |
A Spec's .toolbox directory has data files containing absolute path names of files. This causes havoc if one copies an existing spec--for example, from another machine--and tries to open it without copying it to a directory with exactly the same path name. A possible bug fix is to rewrite the offending files when opening the new spec. See the comments preceding Spec.createNewSpec(...). |
Summary: | Incorrect links in displayed PlusCal translator error message | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | this is a tla file |
In the soon-to-be-attached example, the PlusCal translator reports missing labels in two locations. When the Toolbox displays that message, it seems to attach links to the two locations that both refer to the first location. Created attachment 26 [details]
this is a tla file
I just noticed that this was filed under the wrong component. It looks like yet another bug in the Toolbox's parsing of output of the programs it calls. |
Summary: | I/O and backend calls not sufficiently decoupled from UI (main) thread | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | daniel.bmore.ricketts, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- |
File > Open Spec > a fairly large spec causes the UI to hang. This is due to parsing the model in the UI thread. Same happens, if File > Parse Spec is clicked. The appropriate command handles have to take care of decoupling the parsing from the UI thread by using a short-lived Thread or an org.eclipse.core.runtime.jobs.Job. I remeber a discussion between Leslie and me regarding this issue. I also remember that we decided to touch this place on demand only, because Lesli ensured me that the biggest spec he ever saw was 64KB and Sany parses it in very few seconds, so it is acceptable for the user to wait. There are several issues to solve if running the SANY in a separate thread/job. 1. There is the synchronization issue with the Parse Status 2. During Parsing, the SpecObj and is not available, which means that the most parts of smart editor functions doesn't work. Since we developed A MINIMAL parser integration solution, it worked for us and it is ok to improve it in the current iteration. I would address another important issue if you touch this place. Currently SANY runs a complete reparse, which is a litte dump. Large specs consists of many individual TLA+ modules and a modification usually doesn't affect all the modules. So instead of parsing the spec starting from root module every time, it would be better to only affected modules. I remember Leslie and me discussed this issue and we even tried to implement it, but then we left it as it is and decided to implement the easiest parsing solution and improve it later. So, in short: YES, I vote for decoupling parsing from UI thread. *** Bug 78 has been marked as a duplicate of this bug. *** More candidates: org.lamport.tla.toolbox.tool.tlc.ui.editor.page.BasicFormPage.RunAction.run() org.lamport.tla.toolbox.tool.tlc.ui.editor.ModelEditor.doSave(IProgressMonitor) org.lamport.tla.toolbox.tool.tlc.traceexplorer.TraceExplorerComposite.doExplore() org.lamport.tla.toolbox.tool.tlc.ui.modelexplorer.CloneModelContributionItem.getContributionItems() *** Bug 137 has been marked as a duplicate of this bug. *** *** Bug 110 has been marked as a duplicate of this bug. *** org.lamport.tla.toolbox.tool.tla2tex.handler.ProducePDFHandler.execute(ExecutionEvent) |
Summary: | Bundle-RequiredExecutionEnvironment is set to J2SE-1.4 although Java5 API is used | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
org.lamport.tla.toolbox.* bundles use Java5 API but their BREE is set to Java 1.4. BREE has been set to Java 1.5 Created attachment 27 [details]
mylyn/context/zip
|
Summary: | org.lamport.tla.toolbox.tool.prover uses Java 1.6 API | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
java.lang.String.isEmpty() is not avaiable in Java 5 Fix released by replacing isEmpty() with length() == 0 Created attachment 28 [details]
mylyn/context/zip
|
Summary: | Test dependencies not satisfied causing compiler errors in o.l.t.toolbox and o.l.t.toolbox.tool.tlc.ui | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Both bundles may _optionally_ depend on package "junit.framework" to satisfy the build time dependency but allow Junits absence at runtime. Fix released Created attachment 29 [details]
mylyn/context/zip
|
Summary: | Distributed TLC based on RMI broken | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Refactorings broke the RMI based distributed version of TLC. Hi Simon, what's the reason you have deprecated all RMI related code? I have hacked it to get back working and our manual tests appear to work. Real tests are pending though. Somehow Yuan and me decided that we are not able to make TLC work in distributed mode. From this point on I tried to push all the refactorings through both code bases: the single machine TLC, which I could test and through the distributed part wchi I could not test. In order to distuinguish the one from another, I marked TLC parts as depricated... I assume it was a mistake. Fixed in HEAD (more performance tests pending) |
Summary: | Add framework to run automated UI tests | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 120 | ||
Bug Blocks: |
Automated UI tests are a great time saver especially when developing for multiple OS. SWTBot [0] allows to easily write UI tests that can be executed automatically. [0] http://eclipse.org/swtbot/ Framework released to HEAD |
Summary: | Automatically detect pdflatex on the system | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
If pdflatex is not on the system path, an incomprehensible dialog pops up complaining that pdflatex cannot be found ("No such file or directory"). To make it easier for the user, either: a) Find pdflatex automatically (CDT has facilities to located system binaries) b) Generate PDF directly in Java c) Improve error dialog with a direct link to the Preferences > TLA+ Prefs > PDF Viewer |
Summary: | "Produce PDF Version" handler executes PDF generation on the UI thread | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Canceling a long or stuck operation is impossible since the buttons don't work. org.lamport.tla.toolbox.tool.tla2tex.PDFHandlerThreadingTest has been added as a test case, though not activated yet. |
Summary: | NullPointerException when using spaces in application path (path to TLC java process) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 157 |
When using a space in the app path on Mac OS X, Toolbox throws a NPE while executing a model check. Changing the path name to not contain a whitespace appears to prevent this error (even thought the path gets renamed back to spaces again) |
Summary: | Open spec wizard accepts specs with illegal names | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Add a marker to the new spec wizard forbidding illegal names (like -) Fixed in HEAD, verified on Mac, Windows XP, Linux Created attachment 40 [details]
mylyn/context/zip
|
Summary: | Toolbox does not shut down gracefully with model checks still running | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Closing the Toolbox during a model check causes exceptions (e.g. NPE) in different parts of the code base. The assumption is, that the asynchronous jobs do not get canceled correctly or themselves check if the Toolbox has quit. ENTRY org.eclipse.ui 4 4 2011-05-11 14:31:12.919 !MESSAGE Failed to execute item toolbox.command.spec.new !STACK 0 org.eclipse.core.commands.ExecutionException: No activeWorkbenchWindow found while executing toolbox.command.spec.new at org.eclipse.ui.handlers.HandlerUtil.noVariableFound(HandlerUtil.java:40) at org.eclipse.ui.handlers.HandlerUtil.getVariableChecked(HandlerUtil.java:89) at org.eclipse.ui.handlers.HandlerUtil.getActiveWorkbenchWindowChecked(HandlerUtil.java:210) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:33) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot$2.run(AbstractSWTBot.java:159) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop(EventLoopProgressMonitor.java:123) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled(EventLoopProgressMonitor.java:97) at org.eclipse.core.internal.jobs.ThreadJob.isCanceled(ThreadJob.java:146) at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:235) at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:199) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:92) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:286) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:117) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1914) at org.eclipse.core.internal.resources.Project.touch(Project.java:1270) at org.lamport.tla.toolbox.spec.Spec.setLastModified(Spec.java:193) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.setSpecLoaded(WorkspaceSpecManager.java:242) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler.execute(OpenSpecHandler.java:64) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.lamport.tla.toolbox.util.UIHelper.runCommand(UIHelper.java:420) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:55) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot$2.run(AbstractSWTBot.java:159) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.swtbot.eclipse.core.UITestApplication.start(UITestApplication.java:54) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !ENTRY org.eclipse.ui 4 0 2011-05-12 08:45:48.479 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed) at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:45) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot$2.run(AbstractSWTBot.java:159) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.swtbot.eclipse.core.UITestApplication.start(UITestApplication.java:54) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.widgets.Widget.error(Widget.java:466) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:403) at org.eclipse.swt.widgets.Label.setImage(Label.java:524) at org.eclipse.jface.dialogs.TitleAreaDialog.setTitleImage(TitleAreaDialog.java:650) at org.eclipse.jface.wizard.WizardDialog.hardClose(WizardDialog.java:870) at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:819) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:430) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot$2.run(AbstractSWTBot.java:159) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 47 more !ENTRY org.eclipse.ui 4 0 2011-05-12 08:45:48.482 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException) at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.swtbot.eclipse.core.UITestApplication.start(UITestApplication.java:54) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: java.lang.NullPointerException at org.lamport.tla.toolbox.util.UIHelper.runCommand(UIHelper.java:414) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:55) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot$2.run(AbstractSWTBot.java:159) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221) at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 24 more !ENTRY org.eclipse.core.jobs 4 2 2011-05-18 12:41:33.895 !MESSAGE An internal error occurred during: "Parsing spec...". !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.ui.contribution.StatusReflectingSpecLifecycleParticipant.initialize(StatusReflectingSpecLifecycleParticipant.java:23) at org.lamport.tla.toolbox.util.SpecLifecycleManager.initialize(SpecLifecycleManager.java:49) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.<init>(WorkspaceSpecManager.java:58) at org.lamport.tla.toolbox.Activator.getSpecManager(Activator.java:297) at org.lamport.tla.toolbox.util.ResourceHelper.getResourceByName(ResourceHelper.java:147) at org.lamport.tla.toolbox.util.ResourceHelper.getResourceByModuleName(ResourceHelper.java:137) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:258) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:83) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:56) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler$1.run(OpenSpecHandler.java:73) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) java.lang.NullPointerException at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1196) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1984) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler$1.run(OpenSpecHandler.java:73) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.eclipse.core.jobs 4 2 2011-05-18 12:56:17.191 !MESSAGE An internal error occurred during: "Parsing spec...". !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.util.RCPNameToFileIStream.initInternalLibraryPath(RCPNameToFileIStream.java:58) at org.lamport.tla.toolbox.util.RCPNameToFileIStream.<init>(RCPNameToFileIStream.java:48) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:128) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:83) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:56) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler$1.run(OpenSpecHandler.java:73) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) |
Summary: | Grey out edit button in model editor unless selection in declared constants table | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
User reports indicate that the model editor Edit button for the constants should be greyed out unless a valid selection in the table is present. Otherwise one might think the button does no function correctly since clicking it has no effect. !ENTRY org.eclipse.ui 4 0 2011-05-11 16:22:22.313 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73) at org.lamport.tla.toolbox.tool.tlc.ui.editor.part.ValidateableConstantSectionPart.doEditFormula(ValidateableConstantSectionPart.java:37) at org.lamport.tla.toolbox.tool.tlc.ui.editor.part.ValidateableConstantSectionPart.doEdit(ValidateableConstantSectionPart.java:80) at org.lamport.tla.toolbox.tool.tlc.ui.editor.part.ValidateableTableSectionPart$1.widgetSelected(ValidateableTableSectionPart.java:67) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Clicking the button with a selection |
Summary: | Open .tla from the system by double clicking in TLA Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 116 | ||
Bug Blocks: |
This feature has been added with Eclipse 3.6 (Helios release) [0]. [0] https://bugs.eclipse.org/4922 See Eclipse bug https://bugs.eclipse.org/4922 Documentation can be found on the Eclipse wiki: - http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/product_open_file.htm - http://wiki.eclipse.org/Eclipse/OpenFileFeature |
Summary: | Upgrade to recent Eclipse RCP version | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 115, 10 |
The Toolbox ships on top of Eclipse 3.5 (2009). This bugs require a more recent version of Eclipse. Since this change potentially introduces new bugs, it shouldn't be done lightheadedly though. Fixed a while ago with the introduction of an automated build |
Summary: | Adobe PDF opens up in a separate windows instead of embedded editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLATEX Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- |
It has been reported that on Windows 7 a generated PDF does not open up inside the Toolbox editor but in a separate Adobe windows. |
Summary: | "Translate PlusCal Algorithm" handle may only be enabled if spec indeed contains a PlusCal definition | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
LL comment: Even go further and do not show the translation button unless the current spec contains a PlusCal spec. |
Summary: | German keyboard layout does not match ASCII values | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Mac OS | ||
Target Version: | --- |
A user reported that: "The first time I tried to create a example project but I could not type “[ ]” It seems that TLA+ is not recognizing special chars like “[ ] { }”, when input method in Mac OS X is set to German. If you set it to English it works." |
Summary: | Automated product build | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 108 |
TLA+ Toolbox currently is build manually from inside the development environment. A headless build should replace this task. Fix released to SVN run "mvn install" in the tla2-inria/ folder to build products |
Summary: | Renaming spec broken, causing inconsistent projects even after Toolbox restart | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 58 | ||
Bug Blocks: |
Renaming a spec causes the renamed spec to vanish from the spec explorer. After restarting the toolbox both the renamed as well as the new spec show up. If the underlying fix proves difficult, greying out "Rename" from the context menu should be considered. Is a spec rename even supposed to change the name of the root .tla file as well as the module name inside? Fixed in HEAD |
Summary: | Generated PDF does not show in embedded browser hard locking the Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- |
On Ubuntu Natty 11.04 producing a PDF causes the progress bar to come up which hard locks at approximately 50%. No multipage editor with the embedded browser is ever shown. The only option to recover from this situation is to forcefully kill the Toolbox (which might cause data loss). It appears as if reinstalling "xulrunner-1.9.2" fixed the hard lock issue. It must have somehow reseted the file handling in Mozilla Firefox (purging ~/.mozilla/eclipse did not help). Now the editor page opens up, but instead of showing the PDF, it prompts to save the file to disk. |
Summary: | Statusline should indicate "unparsed" state on dirty editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
Protocol Bernhard Schildendorfer
Report Bernd Wittman |
"[...] it was not possible to enter behavior spec in the model for an existing specification. Although the Spec Status was displayed as “parsed”, the input fields were disabled. It turned out that the specification contained errors, but the spec status was displayed wrong because it was a new specification. After parsing the spec manually, an error occurred because of [...]" (Bernhard Schildendorfer) "Changes in the TLA-Module-Window are not indicated in the “Spec Status” Field at the bottom of the window. From my point of view, each editing action should be indicated in the “Spec Status” as “unknown” or similar (independently of the file-save-status). Also, by executing the TLC Model Checker, no “Do you want to save the modified resources” announcement is displayed in reference to changes in the TLA-Module-Window." (Bernd Wittmann) Created attachment 30 [details]
Protocol Bernhard Schildendorfer
see page 4 to 5
Created attachment 31 [details]
Report Bernd Wittman
see page 2
|
Summary: | PDF editor pages stays empty with error message indicating that the file could not be loaded | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | x86 64-bit | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: | Report Silvia Straihammer |
"If I generate PDF to view the tla-File, the program asks me if I want to open or save the pdf-File. But the pdf is already stored in the same directory as the tla-File. If I click on the “open”-Button it lasts a relative long time until it opens the external Reader and the pdf-viewer says: “The navigation to the website was aborted”. Why is it necessary to download the pdf-File?" (Silvia Straithammer) The report does not really indicate if this happened on Vista or Windows 7. Will leave it as Windows 7 for now. Created attachment 32 [details]
Report Silvia Straihammer
|
Summary: | Toolbox fails to detect default VM installation on first run | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | leuschel, simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 157 |
It has been reported, that the Toolbox fails to start if not installed into Applications/. Verification pending... While running performance tests, I have made following observations (Mac OS X 10.0.6 x86_64): a) Toolbox does not have to be installed in Applications/ b) First toolbox run model checking throws an NPE c) A toolbox restart fixes the NPE irregardless of where it is installed Job 'TLC run for Model_1' terminated with status: { Error } !ENTRY org.eclipse.core.jobs 4 2 2011-06-10 18:59:05.167 !MESSAGE An internal error occurred during: "TLC run for Model_1". !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.tool.tlc.job.TLCProcessJob.run(TLCProcessJob.java:108) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) The root cause appears to be that the toolbox fails to find the default VM installation (org.eclipse.jdt.launching.JavaRuntime.getDefaultVMInstall()) on its first run. Updating bug title to reflect this. If bundle "org.eclipse.jdt.launching.macosx" is missing, eclipse fails to detect/find the VM on Mac. *** Bug 133 has been marked as a duplicate of this bug. *** |
Summary: | NPE in Add Spec handler when parent directory does not exist | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
For the user it appears as if the Finish button has no functionality. !SUBENTRY 1 org.lamport.tla.toolbox 4 0 2011-05-23 12:11:38.434 !MESSAGE Error creating TLA+ file !STACK 0 java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:883) at org.lamport.tla.toolbox.job.NewTLAModuleCreationOperation.run(NewTLAModuleCreationOperation.java:47) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizard.performFinish(NewSpecWizard.java:51) at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:811) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:430) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:45) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Fix released to HEAD Created attachment 68 [details]
mylyn/context/zip
|
Summary: | Graph windows do not have a title bar making it impossible to close | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The graph title bar is missing on Linux (click on the column title to open it), which makes it impossible to close the graphs. No shortcuts appear to help either. Fixed in HEAD Removed SWT.ON_TOP style bit which screws up on Linux/GTK and which does not have a visible effect on Win or Mac. Created attachment 58 [details]
mylyn/context/zip
|
Summary: | util.SimpleFilenameToStream.locate(String) fails if path contains whitespaces | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 129 | ||
Attachments: | mylyn/context/zip |
\\C:\\Documents%20and%20Settings\\markus\\tlatoolbox\\tlatools\\class\\tla2sany\\StandardModules\\ vs "\\C:\\Documents and Settings\\markus\\tlatoolbox\\tlatools\\class\\tla2sany\\StandardModules\\" Fix released to HEAD, verified on Mac OS X, Windows XP (x86) and Linux. Created attachment 33 [details]
mylyn/context/zip
|
Summary: | TLCWorker may read specification and configuration from TLCServer via RMI | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 128 | ||
Bug Blocks: | |||
Attachments: | mylyn/context/zip |
Instead of requiring the user to copy the specification and configuration files to all workers, workers may read the files with RMI. Closing as fixed, RMI has been added to TLCServerRMI. Created attachment 55 [details]
mylyn/context/zip
|
Summary: | tlc2.util.ByteUtilsTest fails to create test file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
-- Error Log from JUnit -- Class: tlc2.util.ByteUtilsTest Method: test4 Actual: null Expected: null Stack Trace: java.io.FileNotFoundException: test (Is a directory) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at java.io.FileOutputStream.<init>(FileOutputStream.java:70) at tlc2.util.ByteUtilsTest.mainTestWriteLongReadLong(ByteUtilsTest.java:156) at tlc2.util.ByteUtilsTest.test4(ByteUtilsTest.java:73) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at junit.framework.TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:120) at junit.framework.TestSuite.runTest(TestSuite.java:230) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Fix released to HEAD, verified on Linux Created attachment 34 [details]
mylyn/context/zip
|
Summary: | tlc2.util.BigInt.equals causes java.lang.StackOverflowError | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
-- Error Log from JUnit -- Class: tlc2.util.ByteUtilsTest Method: test5 Actual: null Expected: null Stack Trace: java.lang.StackOverflowError at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) at tlc2.util.BigInt.equals(BigInt.java:34) Fix released to HEAD, verified on Linux Created attachment 35 [details]
mylyn/context/zip
|
Summary: | Open Saved Module menu item not grayed out | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Open Saved Module item on the The TLC Model Checker menu should be grayed out if no model is selected. Currently, it's not grayed out but clicking on it does nothing. This will confuse naive users who have no idea what that command does. (They'll probably still be confused if they use that command when it is enabled, but at least they have a chance of figuring it out--and may perhaps go to the help pages to find out.) |
Summary: | Internal Error when running TLC on Mac | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Michael Leuschel <leuschel> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Mac OS | ||
Target Version: | --- |
I am trying to run TLC from the TLA toolbox 1.3.1 on Mac OS X 10.6.7. Whenever I try to run TLC I get the error message: An internal error occurred during: "TLC run for Model_1". java.lang.NullPointerException This happens both using the 32-bit and the 64-bit version. The Hardware is a MacBook Pro Core2Duo 3.06 GHz. It happens with all my specifications and models (which ran successfully on 1.1.0 from Feb 5, 2010). I have also tried creating new specifications from scratch; without success. (As a side-not: the "About TLA Toolbox" menu command seems to perform no action.) (In reply to comment #0) > I am trying to run TLC from the TLA toolbox 1.3.1 on Mac OS X 10.6.7. > Whenever I try to run TLC I get the error message: > > An internal error occurred during: "TLC run for Model_1". > java.lang.NullPointerException > > This happens both using the 32-bit and the 64-bit version. > The Hardware is a MacBook Pro Core2Duo 3.06 GHz. > It happens with all my specifications and models (which ran successfully on > 1.1.0 from Feb 5, 2010). > I have also tried creating new specifications from scratch; without success. Hi Michael, this appears to be an incarnation of bug #111 and potentially bug #125 too. Can you try and check if the workarounds mentioned on those bugs solve your issue? Basically make sure that the toolbox is installed into Applcations/ and that the path to the toolbox does not contain whitespaces. > (As a side-not: the "About TLA Toolbox" menu command seems to perform no > action.) This already gets tracked in bug #27. Thanks Markus |
Summary: | Distributed TLC does not compile on Java 1.5 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Description Resource Path Location Type The constructor IOException(String, EOFException) is undefined MemFPSet2.java /tlatools/src/tlc2/tool/fp line 235 Java Problem Description Resource Path Location Type The constructor IOException(String, IOException) is undefined DiskFPSet.java /tlatools/src/tlc2/tool/fp line 147 Java Problem Description Resource Path Location Type The method getLiveRef() is undefined for the type UnicastRef TLCServer.java /tlatools/src/tlc2/tool/distributed line 157 Java Problem Fix released to HEAD Created attachment 39 [details]
mylyn/context/zip
|
Summary: | NPE startup crash requiring Toolbox restart (happens randomly) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: |
Console output
mylyn/context/zip mylyn/context/zip |
!ENTRY org.eclipse.ui 4 0 2011-05-31 01:10:00.273 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.util.SpecLifecycleManager$1.invoke(SpecLifecycleManager.java:30) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEventWithVeto(SpecLifecycleManager.java:80) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEvent(SpecLifecycleManager.java:64) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.addSpec(WorkspaceSpecManager.java:156) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.<init>(WorkspaceSpecManager.java:97) at org.lamport.tla.toolbox.Activator.getSpecManager(Activator.java:297) at org.lamport.tla.toolbox.ui.contribution.SizeControlContribution.updateSize(SizeControlContribution.java:90) at org.lamport.tla.toolbox.ui.contribution.SizeControlContribution.createControl(SizeControlContribution.java:78) at org.eclipse.jface.action.ControlContribution.fill(ControlContribution.java:97) at org.eclipse.jface.action.ToolBarManager.update(ToolBarManager.java:353) at org.eclipse.jface.action.ToolBarManager.createControl(ToolBarManager.java:111) at org.eclipse.ui.internal.menus.TrimContributionManager$ToolBarTrimProxy.dock(TrimContributionManager.java:88) at org.eclipse.ui.internal.menus.TrimContributionManager.update(TrimContributionManager.java:232) at org.eclipse.ui.internal.WorkbenchWindow.updateLayoutDataForContents(WorkbenchWindow.java:3784) at org.eclipse.ui.internal.WorkbenchWindow.setLayoutDataForContents(WorkbenchWindow.java:3795) at org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:1113) at org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:625) at org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:268) at org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:999) at org.eclipse.jface.window.Window.create(Window.java:431) at org.eclipse.ui.internal.Workbench$20.runWithException(Workbench.java:1032) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$28.runWithException(Workbench.java:1384) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2316) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Created attachment 41 [details]
Console output
I suspect the call to org.eclipse.core.runtime.IConfigurationElement.createExecutableExtension(String) in org.lamport.tla.toolbox.util.SpecLifecycleManager.SpecLifecycleManager() to return null on Eclipse <= 3.5. Eclipse bugzilla searches turn up empty though. Created attachment 42 [details]
mylyn/context/zip
To activate assertions in Eclipse follow http://tech.puredanger.com/2007/01/17/eclipse-assertions/ To avoid having to go to the Web to find out how to enable/disable assertions, here's the explanation from http://tech.puredanger.com/2007/01/17/eclipse-assertions/ When using the JDK 1.4+ assert keyword, it’s nice in Eclipse to enable them for all your launch configurations at once. The easiest way to do this is to specify a default VM argument for your installed JDK. You can do this by going to Windows -> Preferences -> Java -> Installed JREs. Then select your JDK and click the Edit… button. In the “Default VM Arguments” box, add -ea. Changed ProverUIActivator.start(BundleContext) to access the preference store from inside the UI thread to prevent SWT invalid thread access exceptions. Changes in comment #6 seem to have done the trick, closing as fixed. Created attachment 54 [details]
mylyn/context/zip
|
Summary: | NPE in UIHelper.runCommand() if workbench window is inactive | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
!ENTRY org.eclipse.ui 4 4 2011-05-31 15:03:36.247 !MESSAGE An internal error has occurred. !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.util.UIHelper.runCommand(UIHelper.java:417) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler$2$1.runInUIThread(NewSpecHandler.java:168) at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.swt.widgets.Display.release(Display.java:3215) at org.eclipse.swt.graphics.Device.dispose(Device.java:246) at org.lamport.tla.toolbox.Application.start(Application.java:50) at org.eclipse.swtbot.eclipse.core.UITestApplication.start(UITestApplication.java:54) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) |
Summary: | CloneModelContributionItem.getContributionItems() refreshes workspace in UI thread | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
org.lamport.tla.toolbox.tool.tlc.ui.modelexplorer.CloneModelContributionItem.getContributionItems() triggers a local workspace refresh each time the UI asks for contribution items. This is an expensive operation and should be refactored into a non-UI job. Causing the following test failure: junit.framework.AssertionFailedError: Backend code (e.g. parsing must not be executed in UI thread) times executed: 14 at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.assertTrue(Assert.java:20) at junit.framework.Assert.assertFalse(Assert.java:34) at org.lamport.tla.toolbox.tool.tlc.ui.test.threading.HandlerThreadingTest.assertNoBackendCodeInUIThread(HandlerThreadingTest.java:99) at org.lamport.tla.toolbox.tool.tlc.ui.test.threading.HandlerThreadingTest.parseSpecInNonUIThread(HandlerThreadingTest.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner.run(SWTBotJunit4ClassRunner.java:54) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.swtbot.eclipse.core.RemotePluginTestRunner.main(RemotePluginTestRunner.java:64) at org.eclipse.swtbot.eclipse.core.UITestApplication.runTests(UITestApplication.java:117) at org.eclipse.ui.internal.testing.WorkbenchTestable$1.run(WorkbenchTestable.java:71) at java.lang.Thread.run(Thread.java:680) |
Summary: | Missing view descriptor causes PartInitException at startup | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.ui 4 4 2011-05-31 18:30:35.320 !MESSAGE Exception in org.eclipse.ui.internal.FolderLayout.addView(String): org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer !ENTRY org.eclipse.ui 4 4 2011-05-31 18:30:35.325 !MESSAGE Exception in org.eclipse.ui.internal.FolderLayout.addView(String): org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer !STACK 1 org.eclipse.ui.PartInitException: View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer at org.eclipse.ui.internal.FolderLayout.addView(FolderLayout.java:75) at org.eclipse.ui.internal.ide.application.ResourcePerspective.defineLayout(ResourcePerspective.java:84) at org.eclipse.ui.internal.ide.application.ResourcePerspective.createInitialLayout(ResourcePerspective.java:49) at org.eclipse.ui.internal.Perspective.loadPredefinedPersp(Perspective.java:816) at org.eclipse.ui.internal.Perspective.createPresentation(Perspective.java:270) at org.eclipse.ui.internal.Perspective.<init>(Perspective.java:156) at org.eclipse.ui.internal.tweaklets.Workbench3xImplementation.createPerspective(Workbench3xImplementation.java:55) at org.eclipse.ui.internal.WorkbenchPage.createPerspective(WorkbenchPage.java:1672) at org.eclipse.ui.internal.WorkbenchPage.init(WorkbenchPage.java:2453) at org.eclipse.ui.internal.WorkbenchPage.<init>(WorkbenchPage.java:563) at org.eclipse.ui.internal.tweaklets.Workbench3xImplementation.createWorkbenchPage(Workbench3xImplementation.java:39) at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:768) at org.eclipse.ui.internal.Workbench$23.runWithException(Workbench.java:1221) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4282) at org.eclipse.ui.internal.StartupThreading.runWithoutExceptions(StartupThreading.java:94) at org.eclipse.ui.internal.Workbench.init(Workbench.java:1562) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2567) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31) at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:114) at org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !SUBENTRY 1 org.eclipse.ui 4 0 2011-05-31 18:30:35.327 !MESSAGE View descriptor not found: org.eclipse.ui.navigator.ProjectExplorer Fix released to HEAD Created attachment 72 [details]
mylyn/context/zip
|
Summary: | "Evaluate Constant Expression" output shows set with duplicate elements | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | x86 64-bit | ||
OS: | Windows 7 | ||
Target Version: | --- |
Toolbox: 32-bit build of Version 1.3.1 of 5 April 2011 (also happens with Version 1.2.1 of 29 September 2010) Running on: Windows 7 Enterprise Edition, 64-bit. In ‘Evaluate Constant Expression’: TCRecur({<<a, b>>, <<b, c>>}) Produces this output; a value that claims to be a set (as intended), but which has duplicate elements: {<<a, b>>, <<b, c>>, <<a, c>>, <<a, b>>, <<b, c>>, <<a, c>>} The model has one constant, with the model value: Univ <- {a, b, c, d, e, f} The spec is an attempt to constructively define a transitive closure operator on binary relations modeled as 2-tuples: ------------------------- MODULE TransitiveClosure ------------------------- CONSTANT Univ MissingJoinTuples(r1,r2) == {<<x, z>> \in (Univ \X Univ) : /\ <<x, z>> \notin r1 /\ <<x, z>> \notin r2 /\ \E y \in Univ : <<x, y>> \in r1 /\ <<y, z>> \in r2} TCRecur(r) == LET RECURSIVE selfJoin(_) selfJoin(r1) == LET mjt == MissingJoinTuples(r1, r1) IN IF mjt = {} THEN r1 (* have reached least fixpoint, so this must be transitive closure *) ELSE LET bigger == r1 \union mjt IN bigger \union selfJoin(bigger) IN selfJoin(r) ============================================================================= This is a TLC bug in PrintT (and presumably in Print as well). For example, PrintT({"a", "a"}) prints {"a", "a"}. The method that puts a value into canonical form should be called before printing the value, but that requires hunting through the TLC code to find the appropriate method. This seems to be trivial to fix, so I fixed it. However, I haven't heard from Yuan that the fix is OK, so I'll leave this open until I do. |
Summary: | Fingerprint server incorrectly retrieved with call by value instead of call by ref | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The fingerprint server is intended to be a shared (RMI) resource and thus must be accessed with call by reference semantics. Fix released to HEAD Created attachment 43 [details]
mylyn/context/zip
|
Summary: | UniqueString has to be created by TLCServer in distributed mode | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If TLC is run in distributed mode (RMI) on a spec that uses the concat operator (\o), UniqueString instances have to be created centrally by the server. Otherwise the same String value might result in different internal unique identifiers. Fix released to HEAD, UniqueString creation is now delegated to the central TLCServer (bottleneck). Created attachment 44 [details]
mylyn/context/zip
|
Summary: | TLCServer fails due to missing fingerprint file on worker connect | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- |
java.io.FileNotFoundException: /tmp/spec/states/11-06-08-08-32-07/MC.fp (No such file or directory) at java.io.RandomAccessFile.open(Native Method) at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212) at tlc2.util.RandomAccessFile.<init>(RandomAccessFile.java:24) at tlc2.util.BufferedRandomAccessFile.<init>(BufferedRandomAccessFile.java:111) at tlc2.util.BufferedRandomAccessFile.<init>(BufferedRandomAccessFile.java:124) at tlc2.tool.fp.DiskFPSet.addThread(DiskFPSet.java:195) at tlc2.tool.distributed.TLCServer.registerWorker(TLCServer.java:145) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy0.registerWorker(Unknown Source) at tlc2.tool.distributed.TLCWorker.main(TLCWorker.java:144) Caused by g5k deployment script |
Summary: | TLCWorkers may wait for TLCServer to come online | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If a TLCWorker fails to connect to the TLCServer instance at startup it exists the process. This has proven impractical for a distributed system. Hence, TLCWorkers may wait for the server to come online by repeatedly trying to connect (with increasing wait times). Fix released to HEAD Created attachment 45 [details]
mylyn/context/zip
|
Summary: | Collect and report performance statistics for RMI distributed TLC | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
In order to improve distributed TLC, reproducable statistics have to be collected during runtime. Fix released to HEAD Created attachment 46 [details]
mylyn/context/zip
|
Summary: | Toolbox not reporting a TLC error | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 220 | ||
Attachments: | a zip file |
The console log shows that running a model caused a TLC error (as it should have), but the Toolbox reported no error or any other result for the run. The Toolbox ran TLC correctly on a clone of the model. Below is a copy of the Eclipse console output produced by the incorrect run. The model will be attached below. -------- footFileName = C:\lamport\books\hyper-tla\specs\Channel\FGBoundedBuffer.tla Writing files to: Model_1\ ---- Skipping resource: Model_1/FGBoundedBuffer.tla Skipping resource: Model_1/MC.tla Skipping resource: Model_1/PCalBoundedChannel.tla ---- Found algorithm definition in PCalBoundedChannel.tla Found algorithm definition in FGBoundedBuffer.tla entering removeModelProblemMarkers() on FGBoundedBuffer___Model_1 with markerType set to org.lamport.tla.toolbox.tlc.modelErrorSANY Final check for the modelcheck mode. The result of the check is true --------------------------- TLC ARGUMENTS: --------------------------- -checkpoint 3 -config MC.cfg -coverage 3 -workers 1 -tool -metadir C:\lamport\books\hyper-tla\specs\Channel\FGBoundedBuffer.toolbox\Model_1 MC --------------------------- END TLC ARGUMENTS --------------------------- entering removeModelProblemMarkers() on FGBoundedBuffer___Model_1 with markerType set to org.lamport.tla.toolbox.tlc.modelErrorTLC TLCOutputSourceRegistry for model checking maintains 4 sources. The source FGBoundedBuffer___Model_1.launch has 4 prio and 1 listeners The source BPConProof___Model_1.launch has 4 prio and 1 listeners The source FGBoundedBuffer___Model_1_Copy.launch has 4 prio and 1 listeners The source PCalBoundedBuffer___Model_2.launch has 4 prio and 1 listeners ---- ---- Found algorithm definition in PCalBoundedChannel.tla Found algorithm definition in FGBoundedBuffer.tla !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.170 !MESSAGE Error broadcasting the message !STACK 0 java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1 at java.util.Vector.get(Vector.java:694) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.createError(TLCModelLaunchDataProvider.java:586) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:273) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.171 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.202 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.218 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.233 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.514 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.545 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) !ENTRY org.lamport.tla.toolbox.tool.tlc 4 0 2011-06-09 09:41:15.561 !MESSAGE Error broadcasting the message !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:245) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:92) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:59) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:225) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:604) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:731) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:712) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:697) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:762) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1157) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1176) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:25) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Thread.java:619) ---- ---- Found algorithm definition in PCalBoundedChannel.tla Found algorithm definition in FGBoundedBuffer.tla Job 'TLC run for Model_1' terminated with status: { Done } Created attachment 47 [details]
a zip file
The model in question is Model_1. The clone Model_1_Copy worked.
|
Summary: | Deleting a model from one spec seems to delete models with the same name from all specs | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Add a model named Foo to one spec. Close that spec. Add a model named Foo to a second spec. Close that spec. Re-open the first spec and delete the model named Foo. It will be deleted from the second spec too. It's pretty amazing that I never noticed this before. It looks like the problem is in DeleteModelHandler.java, which I presume is the handler for the Delete Model command. The execute command has a loop that gets a list of launch configurations and deletes any that have the right name. However, instead of comparing the complete model name, which begins with the spec name + "____", the comparison is against ModelHelper.getModelName(...), which strips that stuff away. I presume Simon thought that the list of launch configurations were only ones from the current spec and they are from all specs, but I haven't tried debugging to check this. Fix released to HEAD - Simplified implementation by cutting out the middle man^delegate - Multi-selection support added - Decoupled delete operation from UI thread -- Canceled -- Progress - Delete gets delegated to Workspace -- Undo trivial to implement Unit/Func. tests pending... (manually tested on Linux and Mac) Created attachment 48 [details]
mylyn/context/zip
Resolving as fixed, no unit tests have been written. |
Summary: | NumberFormatException for input "2262 @!@!@java.lang.IllegalArgumentException: URI is not" during startup | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.text 4 2 2011-06-10 14:18:45.147 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.text". !STACK 0 java.lang.NumberFormatException: For input string: "2262 @!@!@java.lang.IllegalArgumentException: URI is not" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:458) at java.lang.Integer.parseInt(Integer.java:499) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCAnalyzer.getMessageCode(TagBasedTLCAnalyzer.java:295) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCAnalyzer.processTag(TagBasedTLCAnalyzer.java:132) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCAnalyzer.addTagEnd(TagBasedTLCAnalyzer.java:82) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:216) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:611) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:755) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:736) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:721) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:796) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1191) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1210) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:315) at org.lamport.tla.toolbox.tool.tlc.output.LogFileReader.read(LogFileReader.java:52) at org.lamport.tla.toolbox.tool.tlc.output.source.TLCOutputSourceRegistry.connect(TLCOutputSourceRegistry.java:163) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.connectToSourceRegistry(TLCModelLaunchDataProvider.java:744) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.<init>(TLCModelLaunchDataProvider.java:130) at org.lamport.tla.toolbox.tool.tlc.output.source.TLCOutputSourceRegistry.getProvider(TLCOutputSourceRegistry.java:218) at org.lamport.tla.toolbox.tool.tlc.ui.editor.page.ResultPage.loadData(ResultPage.java:231) at org.lamport.tla.toolbox.tool.tlc.ui.editor.page.BasicFormPage.createFormContent(BasicFormPage.java:276) at org.eclipse.ui.forms.editor.FormPage$1.run(FormPage.java:152) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.forms.editor.FormPage.createPartControl(FormPage.java:150) at org.lamport.tla.toolbox.tool.tlc.ui.editor.ModelEditor.addPages(ModelEditor.java:478) at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:953) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$31.runWithException(Workbench.java:1567) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) TLCOutputSourceRegistry for model checking maintains 1 sources. The source Test___Model_1.launch has 1 prio and 1 listeners Fix released to HEAD Created attachment 49 [details]
mylyn/context/zip
|
Summary: | util.SimpleFilenameToStream.getInstallationBasePath() occasionally fails to lookup the StandardModules/ path because java.lang.ClassLoader.getResource(String) returns in jar resource | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
java.lang.ClassLoader.getResource(String) does not behave deterministically WRT the resource it returns. This causes util.SimpleFilenameToStream.getInstallationBasePath() to randomly fail because it finds the StandardModules inside the "jar:file:" scheme (URL) and not "file:". There are several ways to address this issue: a) make resource loading deterministic b) support loading from file: as well as jar:file: c) derive an RCPSimpleFilenameToStream resolver that gets used by the Toolbox Added b) in jar loading to util.SimpleFilenameToStream Created attachment 50 [details]
mylyn/context/zip
|
Summary: | Specs with no behavior specification don't work until you add and remove a behavior spec | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED WORKSFORME | ||
Severity: | major | CC: | simon |
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
In the Toolbox, create a new spec whose root module is ------ Test ------- ASSUME TRUE =========== Create a model and run TLC on it. The Toolbox claims that TLC produces the mysterious error %1%. Add the statement VARIABLE x but don't change the model. (It will still specify "no behavior specification".) Running TLC produces the error The configuration file did not specify the initial state predicate. In both these cases, the TLC Console shows that TLC found no error, and running TLC on the MC spec outside the Toolbox produces no error. Now add the definition Spec == x=0 /\ [][x'=x]_x to the module. Change the model to use Spec as the behavior specification. Then (without running TLC) select "No behavior Specification" and run the model. It runs fine. Delete Spec from the behavior specification field and select "No Behavior Specification". Again, the model runs fine. Delete the VARIABLE statement and the definition of Spec. Again the model runs fine. Correction: The error The configuration file did not specify the initial state predicate. actually was produced by TLC, even when running the MC file from outside the Toolbox. The problem seems to have gone away when I restarted the Toolbox. I can no longer produce it. |
Summary: | Toolbox not asking for approval to run TLC when spec has been modified | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
If you tried to run a model after modifying the spec without saving the modifications, the Toolbox used to ask if you wanted to save those modifications. It no longer does, but it should. (You don't want to make a change, forget to save it, and then start a model running before going home for the weekend.) Fix released to HEAD Created attachment 70 [details]
mylyn/context/zip
Model editors should be saved implicitly. Only a dirty spec editor should raise a save dialog. Fix released to HEAD (Raise save dialog for dirty spec editor) Created attachment 76 [details]
mylyn/context/zip
|
Summary: | org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser does not scale for large output | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Parsing ~70k lines of TLC output takes hours. Fixed and released to HEAD - Set VIRTUAL bit for coverage table to only create table items on demand - Group user content in console parser in a single token instead of a token per char (breaks incomplete line support though) - Buffer parser input up to complete lines (a complete has a line ending) Created attachment 53 [details]
mylyn/context/zip
|
Summary: | Improve keyboard experience | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
F11: Launch currently active model check F11 added Created attachment 56 [details]
mylyn/context/zip
|
Summary: | Turn tla2tool.jar into OSGi bundle | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | ||
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The Toolbox nests tla2tools.jar inside bundle org.lamport.tla.toolbox. This workaround requires an extra build cycle (manually triggering tlatoolbox's ant build) during development every time a change is done to tlatoolbox/. To avoid this overhead, tlatools should be turned into a first class OSGi citizen by converting it into a bundle. This adds no overhead to non-OSGi usage. Fix released to HEAD Created attachment 51 [details]
mylyn/context/zip
|
Summary: | Platform specific bundles [net/filesystem] missing in distribution | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 157 | ||
Attachments: | mylyn/context/zip |
All distribution bundles on http://research.microsoft.com/en-us/um/people/lamport/tla/toolbox.html miss platform specific bundles for .net and .filesystem. This means that the toolbox will use the less efficient platform independent versions. .filesystem. has been added to the build. Marking as fixed. Tested on Mac, Win and Linux. Created attachment 86 [details]
mylyn/context/zip
|
Summary: | Obscure PlusCal translator's command-line options don't work from inside Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | trivial | ||
Priority: | P5 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The PlusCal translator options -spec, -myspec, -spec2, -myspec2, and -writeAST write the file AST.tla; the first four read that AST.tla file to perform the translation. This file is always written to and read from the directory from which the translator is run. The Toolbox runs the translator from some obscure directory somewhere, specifying the module name with a path. This works all right, except for the -writeAST, since the user presumably wants to see the AST.tla file. Not a big deal. Moreover, since these option were broken in Version 1.5 and work only with the -version 1.4 option, this bug is even less worth fixing. However, it's recorded here for future reference. If these options are ever made to work again, it would be a good idea to modify the translator to write the AST.tla file in the same directory as the module containing the algorithm. |
Summary: | Trace Explorer exploration fails with stack overflow | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Running a trace exploration on the FindOp error trace reveals a stack overflow in SANY. Reproduce: a) Model check FindOp with an invariant who causes an error trace (pc # "Done") b) Add <<delim, leftTok>> to error trace exploration and hit explore see tla2sany.drivers.Bug156TEStackOverflowTest.testFrontEndParse() for a test case showing this behavior. Created attachment 52 [details]
mylyn/context/zip
LL: "The two different errors depending on how much heap space SANY is given suggests that it might be caused by the Toolbox putting some sort of weirdness into the TE.tla file." TE.tla is written in org.lamport.tla.toolbox.tool.tlc.launch.TraceExplorerDelegate.buildForLaunch(ILaunchConfiguration, String, IProgressMonitor) starting in line #388. |
Summary: | Release Toolbox 1.3.2 or 1.4 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 111, 125, 154, 192, 193 | ||
Bug Blocks: |
This bug is intended as an umbrella bug for the next Toolbox release (it's either 1.3.2 or 1.4). Fix for bug #10 makes the comment on the website [0] obsolete. [0] http://research.microsoft.com/en-us/um/people/lamport/tla/toolbox.html#downloading Adding release stoppers Done already |
Summary: | Run distributed TLC from Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
It should be possible to run the distributed TLC server instance from within the Toolbox. This makes it easier for user because they don't have to start the server process manually. Obviously it won't support larger experiments where the server and the toolbox have to be separated (e.g. network topology and/or hardware...). Fix released to HEAD |
Summary: | NPE in NewSpecWizard job | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.core.jobs 4 2 2011-07-06 10:02:11.580 !MESSAGE An internal error occurred during: "NewSpecWizard job". !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73) at org.eclipse.core.runtime.Path.initialize(Path.java:577) at org.eclipse.core.runtime.Path.<init>(Path.java:163) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler$1.run(NewSpecHandler.java:90) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Fix released to HEAD (check for valid rootfilename before running job) Created attachment 57 [details]
mylyn/context/zip
|
Summary: | java.lang.ArithmeticException: / by zero in Graph window when column value is 0 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
!ENTRY org.eclipse.ui 4 0 2011-07-06 12:15:38.200 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ArithmeticException: / by zero) at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: java.lang.ArithmeticException: / by zero at org.lamport.tla.toolbox.tool.tlc.ui.editor.page.ResultPage$DataDisplay$1.paintControl(ResultPage.java:997) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:223) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Control.gtk_expose_event(Control.java:2783) at org.eclipse.swt.widgets.Composite.gtk_expose_event(Composite.java:701) at org.eclipse.swt.widgets.Canvas.gtk_expose_event(Canvas.java:167) at org.eclipse.swt.widgets.Shell.gtk_expose_event(Shell.java:1204) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1739) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4796) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4360) at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8189) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1238) at org.eclipse.swt.internal.gtk.OS._gdk_window_process_updates(Native Method) at org.eclipse.swt.internal.gtk.OS.gdk_window_process_updates(OS.java:5366) at org.eclipse.swt.widgets.Control.update(Control.java:4755) at org.eclipse.swt.widgets.Shell.setVisible(Shell.java:2004) at org.eclipse.swt.widgets.Shell.open(Shell.java:1410) at org.lamport.tla.toolbox.tool.tlc.ui.editor.page.ResultPage$DataDisplay.run(ResultPage.java:1033) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 23 more This occurs when trying to graph a column all of whose values are 0. Added a little hack to suppress the overflow. It also seems to suppress the graph, but it's not worth trying to fix that. |
Summary: | Serve TLCWorker via Java Webstart | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Making the TLCWorker app available via Java Webstart simplifies deployment in (user) scripts. Released to HEAD Created attachment 59 [details]
mylyn/context/zip
|
Summary: | Bootstrap JRE via Java Webstart | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- |
On Windows systems the browser can be used to bootstrap a JRE. Accessing http://$TOOLBOX_HOST:10996/ will now automatically check for an installed JRE and prompt the user to install it if now JRE could be found. An initial search turns up empty for unattended installation (it's probably a security feature anyway) |
Summary: | NPE in SimpleFilenameToStream resolver when run from inside signed jar (required by web start) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
java.lang.ExceptionInInitializerError at tlc2.tool.distributed.TLCWorker.main(TLCWorker.java:161) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.javaws.Launcher.executeApplication(Launcher.java:1804) at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1750) at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1512) at com.sun.javaws.Launcher.run(Launcher.java:130) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException at util.SimpleFilenameToStream.getInstallationBasePath(SimpleFilenameToStream.java:61) at util.SimpleFilenameToStream.<clinit>(SimpleFilenameToStream.java:45) ... 10 more Error: Failed to start worker at coconut for server coconut.local. null Fix released to HEAD (Lesson confirmed: never ever use File in your application, use InputStream instead) Created attachment 60 [details]
mylyn/context/zip
|
Summary: | Add custom system properties to TLCServer process launched from within Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
In some scenarios the TLCServer process requires extra system properties (e.g. java.rmi.server.hostname, java.rmi.server.useLocalHostname, ... [0]). [0] http://download.oracle.com/javase/1.4.2/docs/guide/rmi/javarmiproperties.html Fix released to HEAD Created attachment 61 [details]
mylyn/context/zip
|
Summary: | Startup exception/crash due to invalid thread access | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
org.osgi.framework.BundleException: Exception in org.eclipse.ui.internal.editors.text.EditorsPlugin.start() of bundle org.eclipse.ui.editors. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417) at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:82) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:58) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Fix released to HEAD Created attachment 81 [details]
mylyn/context/zip
|
Summary: | Interesting Obligations view: Could not create the view: Subclassing not allowed | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Loïc FEJOZ <loic> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | x86 32-bit | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
In version 1.3.1 of 5 April 2011 running under Linux, launching proof manager on an invalid proof raise the following error. org.eclipse.swt.SWTException: Subclassing not allowed at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:450) at org.eclipse.swt.widgets.ExpandItem.checkSubclass(ExpandItem.java:120) at org.eclipse.swt.widgets.Widget.<init>(Widget.java:205) at org.eclipse.swt.widgets.Item.<init>(Item.java:63) at org.eclipse.swt.widgets.ExpandItem.<init>(ExpandItem.java:114) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView$InterestingObligationExpandItem.<init>(ObligationsView.java:564) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.updateItem(ObligationsView.java:336) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.fillFromCurrentSpec(ObligationsView.java:237) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.createPartControl(ObligationsView.java:167) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:367) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:226) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2229) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1067) at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3816) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3813) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3789) at org.lamport.tla.toolbox.util.UIHelper.openView(UIHelper.java:179) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.updateObligationView(ObligationsView.java:271) at org.lamport.tla.toolbox.tool.prover.ui.util.ProverHelper$3.run(ProverHelper.java:1094) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3468) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3115) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) Fix released to HEAD Created attachment 69 [details]
mylyn/context/zip
|
Summary: | User defined block size in TLC distributed mode | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
A user may wish to define a custom block size for the amount of states that are assigned a worker in distributed mode. Functor like API added for user defined code. Created attachment 62 [details]
mylyn/context/zip
Scriptable BlockSizeSelector (e.g. JavaScript) -Dtlc2.tool.distributed.selector.factory=tlc2.tool.distributed.selector.ScriptableBlockSelectorFactory -Dtlc2.tool.distributed.selector.script=/path/to/ExampleScript.javascript ---- ExampleScript.javascript ---- function getBlocks(stateQueue, worker) { var size = stateQueue.size(); var blockSize = getBlockSize(size); var states = stateQueue.sDequeue(blockSize); return states; } function getBlockSize(size) { var workerCount = tlcServer.getWorkerCount(); var factor = 1.0 / workerCount; return size * factor; } ---- ExampleScript.javascript ---- Fix released to HEAD Created attachment 67 [details]
mylyn/context/zip
|
Summary: | Statistics in distributed mode show incorrect values | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
StatesGenerated does not show correct value. Fix released to HEAD Created attachment 63 [details]
mylyn/context/zip
|
Summary: | States transfered might exceed RMI's maximum transferable size causing EOFException during unmarshalling | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
In cases with few workers a single worker may get assigned to many states at once. Fix released to HEAD (bug #171 makes it even less likely) Created attachment 66 [details]
mylyn/context/zip
|
Summary: | Handling disconnecting workers should not exit model checking | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | ||
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
If a workers disconnects for whatever reason during model checking, the server tries to: a) assign the corresponding server side thread to another (known) worker b) exists the server if no other server are available a) causes twice the load on the worker as the worker will be busy handling its original thread already b) is suboptimal if all workers just get disconnected for a short period of time. The server should simply wait for a new worker to connect. TODO: find out if the server at least writes a checkpoint before it shuts down. Fixed in HEAD |
Summary: | Assign block size (=new states) dynamically | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
LL: "From the user's perspective, the queue is not the particular data structure that the server is maintaining. It's the set of states that have been found but not yet examined to find their successor states. Maintaining the exact size of this queue would require that the workers report the result of examining each state, which is clearly a bad idea. The obvious approximation is to define the queue to be the set of states in the server's queue plus all the states it has sent to the workers for which it has not yet received a reply. Since the queue size is a useful indicator of progress, we want it to report to the user the most accurate value we can without degrading performance. Accuracy is obtained by having the server send states to the workers in small batches. That's why we want to send states in the smallest batches that we can without degrading performance. I don't want the maximum number of states to send to be a user-settable property because the user will have no idea how to set it. The penalty for sending states in smaller batches is using more (shorter) messages to send the same amount of data. If we can get some not terribly inaccurate data on how much bandwidth overhead is added by each separate message (presumably, roughly the bandwidth taken by an empty message), then the server can dynamically determine the number of states to send per message from the average time it takes a worker to process a state and the amount of bandwidth overhead we're willing to add." Fix released to HEAD Created attachment 64 [details]
mylyn/context/zip
|
Summary: | [UI] Use system locale to format start/end time and show duration as tooltip | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The "model checking results" tab does not format start or end time according to the systems current locale. Nor does it show the duration. Fix released to HEAD Created attachment 65 [details]
mylyn/context/zip
|
Summary: | Webserver used to serve jnlp webstart worker file should select port dynamically or fall back to alternative if 10996 is bound already | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The Jetty webserver used by the Toolbox to serve worker.jnlp (distributed TLC) binds to port 10996 (set by system property in .product file). This wouldn't be a problem since 10996 isn't likely to be bound by another program. Unless the other program is another instance of the Toolbox (running on the same machine) which happens e.g. if the user works on two specs simultaneously. |
Summary: | [UI] Better report distributed model run | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
A distributed model should report status on the model checker page Fix released to HEAD Created attachment 73 [details]
mylyn/context/zip
|
Summary: | Deadlock in DiskStateQueue if subset of workers die (disconnect) during model run | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | REOPENED --- | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
Deadlock in DiskStateQueue if subset of workers die (disconnect) during model run All TLCServerThreads are stuck with the following stack trace: Daemon System Thread [TLCServerThread-[rmi://coconut:33691]] (Suspended) waiting for: tlc2.tool.queue.DiskStateQueue (id=79) java.lang.Object.wait(long) line: not available [native method] tlc2.tool.queue.DiskStateQueue(java.lang.Object).wait() line: 485 [local variables unavailable] tlc2.tool.queue.DiskStateQueue(tlc2.tool.queue.StateQueue).isAvail() line: 129 tlc2.tool.queue.DiskStateQueue(tlc2.tool.queue.StateQueue).sDequeue(int) line: 86 tlc2.tool.distributed.selector.StatisticalBlockSelector(tlc2.tool.distributed.selector.BlockSelector).getBlocks(tlc2.tool.queue.StateQueue, tlc2.tool.distributed.TLCWorkerRMI) line: 47 tlc2.tool.distributed.TLCServerThread.run() line: 88 The root cause is in tlc2.tool.distributed.TLCServerThread.run(). If a remote worker disconnects and the TLCServerThread obj cannot be reassigned to a new worker, the states removed from the stateQueue, but for which the successor states have not yet computed, are never returned into the stateQueue. Fix released to HEAD Created attachment 92 [details]
mylyn/context/zip
Argh, not done yet. If tlc2.tool.distributed.TLCServerThread is in the waiting state (due to tlc2.tool.queue.StateQueue.isAvail()) and the remote worker disconnects, tlc2.TLCGlobals.getNumWorkers() is never decremented. To fix the issue noted in comment #6, subsequent remote workers will be reused to wake up stuck TLCServerThreads (in TLCServerThread) when they initially connect TLCServer. This implicitly assumes that there are remote workers (re-)connecting. A more complete fix would be to spawn a timer thread that periodically checks remote workers and cleans up if a worker is gone. Implemented the timer thread mentioned in comment #7. Created attachment 94 [details]
mylyn/context/zip
|
Summary: | NegativeArraySizeException with StateQueue | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
java.lang.NegativeArraySizeException at tlc2.tool.queue.StateQueue.sDequeue(StateQueue.java:78) at tlc2.tool.distributed.selector.BlockSelector.getBlocks(BlockSelector.java:45) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:82) Fix released to HEAD Created attachment 74 [details]
mylyn/context/zip
|
Summary: | Diameter statistics/TLCTrace#getLevel() non deterministic with workers > 1 or with distributed model checking | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
screenshot of the model result page showing non-monoton diameter
Adds a depth field to _each_ state to store the states height in the state tree. A state tree of height 8 where TLCTrace#getLevel() correctly reports the level. A state tree of height 7 where TLCTrace#getLevel() incorrectly reports the level to be 5. |
The diameter statistic is broken in distributed mode. Created attachment 75 [details]
screenshot of the model result page showing non-monoton diameter
LL: "Here’s what I got running 12 workers on the same model. Note that it reports a diameter of 16 instead of the correct value of 19. However, the all the other final statistics are correct. I got the same result running 24 workers (12 machines)." Another example of non-monotonicity with 8 (local) workers: Finished computing initial states: 1 distinct state(s) generated. TLC server at orange is ready (2011-07-25 15:24:45) Progress(4) at 2011-07-25 15:25:45: 65 states generated, 15 distinct states found, 8 states left on queue. Progress(10) at 2011-07-25 15:26:46: 13745 states generated, 300 distinct states found, 153 states left on queue. Progress(14) at 2011-07-25 15:27:47: 26102 states generated, 526 distinct states found, 230 states left on queue. Progress(14) at 2011-07-25 15:28:47: 161977 states generated, 1601 distinct states found, 605 states left on queue. Progress(15) at 2011-07-25 15:29:47: 307949 states generated, 1724 distinct states found, 620 states left on queue. Progress(18) at 2011-07-25 15:31:01: 444191 states generated, 2157 distinct states found, 642 states left on queue. Progress(18) at 2011-07-25 15:32:07: 543780 states generated, 2398 distinct states found, 581 states left on queue. Progress(18) at 2011-07-25 15:33:08: 694574 states generated, 2958 distinct states found, 500 states left on queue. Progress(16) at 2011-07-25 15:34:09: 812710 states generated, 3333 distinct states found, 460 states left on queue. Progress(20) at 2011-07-25 15:35:22: 970293 states generated, 3562 distinct states found, 0 states left on queue. The same behavior can be observed on a non distributed model checking run (with checkpointing activated): Progress(10) at 2011-07-26 16:45:20: 3152 states generated, 1170 distinct states found, 640 states left on queue. Progress(18) at 2011-07-26 16:46:20: 302525 states generated, 65095 distinct states found, 14670 states left on queue. Progress(18) at 2011-07-26 16:47:20: 631070 states generated, 124622 distinct states found, 19439 states left on queue. Progress(26) at 2011-07-26 16:48:21: 950979 states generated, 176805 distinct states found, 18304 states left on queue. Progress(24) at 2011-07-26 16:49:21: 1273683 states generated, 224880 distinct states found, 12596 states left on queue. The depth of the complete state graph search is 43. Enabling checkpoints does not appear to be causing a broken trace, but might increase its likelihood. At least disabling checkpoints in distributed mode has no effect on the occurrence of a broken trace. Two questions come up... a) TLCTrace#getTrace() must under no condition violate the monotonicity? b) Two states A and B with different fingerprints do not share the same TLCState#uid? TLCTrace data structure does not work to contain the distinct state tree in parallel mode (either multiple threads or workers). In parallel mode TLCTrace#lastPtr (last state written to file) -logically the tail of TLCTrace - does not reflect the longest path in the distinct state tree. This is due to the case that TLC generally does not explorer the distinct state tree breadth-first wise in parallel mode. If TLCTrace#getLevel() produces correct results in depth-first search even in single threaded mode is questionable. The trace itself (used for trace exploration if an invariant is violated) is, in all modes, correctly displayed as it is constructed starting from the _known_ violating (end-)state. It does not use TLCTrace#lastPtr. However, TLC does not necessarily find the shortest trace path in parallel mode. On a technical side: TLCTrace doesn't do paging. It is therefore growing indefinitely, posing a technical limitation on the maximum amount of states depending on the file system max file size limit. It is however part of checkpointing. Created attachment 87 [details]
Adds a depth field to _each_ state to store the states height in the state tree.
Created attachment 88 [details]
A state tree of height 8 where TLCTrace#getLevel() correctly reports the level.
Created attachment 89 [details]
A state tree of height 7 where TLCTrace#getLevel() incorrectly reports
the level to be 5.
Both screenshots were created with the same spec/model (just different
invocations of _non-distributed_ TLC with 4 workers on a dual core
machine.
Added TLCTrace#getLevelForReporting() to assure level reported monotonically increments tlc2.tool.ModelChecker.runTLCContinueDoing(int, int) uses the level to determine its isDone state (control flow). It has to be checked, what the effects of tlc2.tool.TLCTrace.getLevel() WRT to control flow in runTLCContinueDoing are. |
Summary: | TLCServer cancellation or crash in distributed mode does not kill/exit remote TLCWorkers | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
LL: "I’ve found that hitting “cancel” on a distributed TLC job does not kill the worker processes. They appear to finish working on the states they’ve been given and then sit waiting for something to happen." Fix released to HEAD TLCWorker need to handle a crashed server -> Periodically check server aliveness (keep alive timer) Cancellation is a variant of a server crash -> Handled by TLCWorker keep alive timer Additionally try to eagerly exit workers from inside a server VM shutdown hook. Created attachment 82 [details]
mylyn/context/zip
|
Summary: | Out of memory exception in TLCServer with many workers | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space at java.lang.String.valueOf(String.java:2840) at java.lang.Thread.getName(Thread.java:1061) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:644) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Java heap space java.lang.OutOfMemoryError: Java heap space at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1943) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at tlc2.tool.TLCStateVec.readObject(TLCStateVec.java:55) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) The user has the chance to increase the heap size on the main model editor page. The default for non-distributed mode is set to 500mb. Maybe this default is too low for distributed mode and should be raised accordingly. Adding Leslie for input on comment #1 |
Summary: | TLCServer exists immediately reporting success when multiple workers connect simultaneously | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
When multiple workers start at once, the first one will empty the state queue causing other workers to signal the server that all work is done. Thus synchronization has to include outstanding results. Fix released to HEAD Created attachment 77 [details]
mylyn/context/zip
Turns out this is a regression caused by bug #176, thus reverting. Created attachment 78 [details]
mylyn/context/zip
|
Summary: | TLC error messages not shown in Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 182 | ||
Bug Blocks: |
LL: "I have not been able to get the Toolbox to display any TLC error message in the place in the TLC Errors window where it’s supposed to. For example, the TLC output below causes the Toolbox to raise an Error window with no message. Also, if an invariant is violated, the Toolbox displays the trace but doesn’t say that the invariant is violated." @!@!@STARTMSG 2262:0 @!@!@ TLC2 Version 2.03 of 20 July 2011 @!@!@ENDMSG 2262 @!@!@ @!@!@STARTMSG 2187:0 @!@!@ Running in Model-Checking mode. @!@!@ENDMSG 2187 @!@!@ @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file MC.tla Parsing file Test.tla Parsing file C:\lamport\tla\newtools\tla2-inria\tlatools\class\tla2sany\StandardModules\TLC.tla Parsing file C:\lamport\tla\newtools\tla2-inria\tlatools\class\tla2sany\StandardModules\Naturals.tla Parsing file C:\lamport\tla\newtools\tla2-inria\tlatools\class\tla2sany\StandardModules\Sequences.tla Semantic processing of module Naturals Semantic processing of module Sequences Semantic processing of module TLC Semantic processing of module Test Semantic processing of module MC @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2011-07-20 14:48:02) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2105:1 @!@!@ Evaluating assumption line 4, col 8 to line 4, col 36 of module Test failed. !@!@STARTMSG 2154:0 @!@!@ Attempted to apply the operator overridden by the Java method public static tlc2.value.IntValue tlc2.module.Naturals.Plus(tlc2.value.IntValue,tlc2.value.IntValue), but it produced the following error: @!@!@STARTMSG 2178:0 @!@!@ Overflow when computing 2147400000+2147400000 @!@!@ENDMSG 2178 @!@!@ @!@!@ENDMSG 2154 @!@!@ @!@!@ENDMSG 2105 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2011-07-20 14:48:02) @!@!@ENDMSG 2186 @!@!@ Fixed in HEAD |
Summary: | TLC user output not shown in Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 181 | ||
Attachments: | mylyn/context/zip |
-------------------------------- MODULE Test -------------------------------- EXTENDS TLC ASSUME PrintT(99) ================== Note the TLC output lines 99 <<"$!@$!@$!@$!@$!", 999>> the first being produced by the PrintT statement, the second by the 999 in the “Evaluate Constant Expression” field of the Model Checking Results page. Neither of them appears where they belong on the Results page. Fix released to HEAD Enhancement bug #151 unveiled a one-offset bug in TagBasedTLCAnalyzer. Created attachment 79 [details]
mylyn/context/zip
|
Summary: | Startup exception due to invalid thread access | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
LL: "I wasn't doing anything unusual when the Toolbox got into this state. Here's the console output when I restarted the Toolbox. The last two exceptions are apparently caused by the Toolbox trying to re-open the spec that was last open. They are what I get when I try to open any spec." !ENTRY org.eclipse.ui.workbench 4 0 2011-07-24 14:03:47.583 !MESSAGE Unable to create view ID org.lamport.tla.toolbox.tool.prover.ui.rejectedObligations: Invalid thread access !STACK 0 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.Widget.checkParent(Widget.java:275) at org.eclipse.swt.widgets.Widget.<init>(Widget.java:146) at org.eclipse.swt.widgets.Control.<init>(Control.java:105) at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:75) at org.eclipse.swt.widgets.Composite.<init>(Composite.java:95) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:362) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:226) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.ViewReference.getView(ViewReference.java:195) at org.eclipse.ui.internal.WorkbenchPage.findView(WorkbenchPage.java:1907) at org.lamport.tla.toolbox.util.UIHelper.findView(UIHelper.java:199) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.refreshObligationView(ObligationsView.java:197) at org.lamport.tla.toolbox.tool.prover.ui.util.ProverSpecLifecycleParticipant.eventOccured(ProverSpecLifecycleParticipant.java:52) at org.lamport.tla.toolbox.util.SpecLifecycleManager$1.invoke(SpecLifecycleManager.java:31) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEventWithVeto(SpecLifecycleManager.java:87) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEvent(SpecLifecycleManager.java:68) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.setSpecLoaded(WorkspaceSpecManager.java:228) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler$1.run(OpenSpecHandler.java:69) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) !ENTRY org.eclipse.core.jobs 4 2 2011-07-24 14:03:47.615 !MESSAGE An internal error occurred during: "OpenSpecHandler is parsing spec...". !STACK 0 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.Widget.checkParent(Widget.java:275) at org.eclipse.swt.widgets.Widget.<init>(Widget.java:146) at org.eclipse.swt.widgets.Control.<init>(Control.java:105) at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:75) at org.eclipse.swt.widgets.Composite.<init>(Composite.java:95) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:270) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.ViewReference.getView(ViewReference.java:195) at org.eclipse.ui.internal.WorkbenchPage.findView(WorkbenchPage.java:1907) at org.lamport.tla.toolbox.util.UIHelper.findView(UIHelper.java:199) at org.lamport.tla.toolbox.tool.prover.ui.view.ObligationsView.refreshObligationView(ObligationsView.java:197) at org.lamport.tla.toolbox.tool.prover.ui.util.ProverSpecLifecycleParticipant.eventOccured(ProverSpecLifecycleParticipant.java:52) at org.lamport.tla.toolbox.util.SpecLifecycleManager$1.invoke(SpecLifecycleManager.java:31) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEventWithVeto(SpecLifecycleManager.java:87) at org.lamport.tla.toolbox.util.SpecLifecycleManager.sendEvent(SpecLifecycleManager.java:68) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.setSpecLoaded(WorkspaceSpecManager.java:228) at org.lamport.tla.toolbox.ui.handler.OpenSpecHandler$1.run(OpenSpecHandler.java:69) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) LL: "Here's the recipe for reproducing the problem. Create a new spec and enter THEOREM FALSE OBVIOUS Run the prover on the theorem. (Put the cursor on the theorem and type Ctl+g Ctl+g.) This will raise an error window. Close the spec and try to reopen it. --- I forgot to mention that the problem happens only if I close the spec with the prover's error window open. If I close that window before closing the spec, there seems to be no problem." Fix released to HEAD Created attachment 80 [details]
mylyn/context/zip
The root cause for this kind of exceptions is missing synchronization between daemon/backend and the UI thread. A backend thread must not access the UI resources outside of the UI thread [0]. In this specific case, the backend recreated the prover UI at startup, but failed to join the UI thread to do so. [0] http://www.eclipse.org/swt/faq.php#uithread |
Summary: | Trying to open a TLC model while the prover is running crashes the Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
Twice I tried to open a TLC model while the Toolbox was running a TLAPS proof, and twice the Toolbox stopped responding. It would be fine for the Toolbox to disable the TLC Model Checker menu items while TLAPS is being run, but crashing is inelegant. I fail to reproduce this on either Win, Mac or Linux. Leslie please outline the steps and attach the corresponding spec/model. This is a test comment. |
Summary: | TLCServer does not accept -checkpoint parameter | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
TLCServer/TLCApp does not know about the -checkpoint parameter and thus only supports checkpointing every 30 minutes. Fix released to HEAD Created attachment 83 [details]
mylyn/context/zip
|
Summary: | [Build] No source enconding set causing Maven to complain about build being platform dependent | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Fix released to HEAD |
Summary: | Toolbox ignores states/ subfolder used by TLCServer to store checkpoint data | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Checkpoint data written by distributed TLC cannot be selected in Toolbox (unless manually copied from subfolder). Fix released to HEAD The "-metadir" parameter has been added to TLCServer to better comply with TLC non-distributed command line arguments. This allows the Toolbox to pass a custom path to the nested process. Created attachment 84 [details]
mylyn/context/zip
|
Summary: | Distributed TLC incorrectly reports states recovered | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Recovering from a checkpoint yields the following output: @!@!@STARTMSG 2198:0 @!@!@ Recovery completed. -- Recovery completed. 157308 distinct states found. 18093 states on queue. states examined. %2% states on queue. @!@!@ENDMSG 2198 @!@!@ Fix released to HEAD (changed tlc2.output.MP.printMessage(int, String) parameters) Created attachment 85 [details]
mylyn/context/zip
|
Summary: | Run user script prior to TLC model checker | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The model checker should support running a custom user script prior to launching the model checker. This is especially useful in distributed mode, where remote workers have to be started. context/changes for UI part: An additional editable input text box with an optional file chooser dialog Created attachment 90 [details]
mylyn/context/zip
Some random thoughts... - Catchy name for "pre-flight" script (current working title)? - Check box to easily deactivate startup script (e.g. if remote workers are already running after TLCServer startup crash) - Sequential vs. parallel execution of script? -- Check script return value in sequential execution prior to launching TLCServer? Both jobs org.lamport.tla.toolbox.tool.prover.job.ProverJob as well as the new ScriptrunnerJob need a shell interpreter to execute. Thus, a common base class should be refactored out of ProverJob. Btw. ProverJob makes the implicit assumption that Cygwin is installed to the C: drive which is not necessarily the case. |
Summary: | Startup NPE in TokenSpec.findTokenSpecs() | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | REOPENED --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.ui 4 0 2011-07-28 15:47:24.765 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.editor.basic.tla.TokenSpec.findTokenSpecs(TokenSpec.java:287) at org.lamport.tla.toolbox.editor.basic.tla.TokenSpec.findCurrentTokenSpec(TokenSpec.java:134) at org.lamport.tla.toolbox.editor.basic.tla.TLAHyperlinkDetector.detectHyperlinks(TLAHyperlinkDetector.java:97) at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:80) at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:263) at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:439) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:199) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) Added null check in org.lamport.tla.toolbox.editor.basic.tla.TokenSpec.findTokenSpecs(String, int) to prevent NPE from happening (does not fix the root cause). Leaving bug open until root cause is found though. Created attachment 91 [details]
mylyn/context/zip
|
Summary: | Remove useless preferences from preference page | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
These preferences are currently useless/meaningless in the scope of the Toolbox: General > Compare/Patch General > Appearance > Colors and Fonts > Text Compare Fixed by implementing a filter in org.lamport.tla.toolbox.ApplicationWorkbenchWindowAdvisor.postWindowOpen(). A much better fix is to completely exclude bundle "org.eclipse.compare". However, this appears to be impractical with current Maven capabilities. Created attachment 93 [details]
mylyn/context/zip
After some more investigation it turns out that: a) "org.eclipse.compare" is required by the update manager and thus cannot be excluded b) "General > Compare/Patch" can be excluded with the method mentioned in comment #1 c) "General > Appearance > Colors and Fonts > Text compare" cannot be excluded easily. The only viable solution would be "Equinox Transforms" (http://wiki.eclipse.org/Equinox_Transforms). Opening that can of worms isn't worth it though. |
Summary: | Add distributed TLC documentation to HTML Toolbox help | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 157 |
Add distributed TLC documentation to HTML Toolbox help Done a while ago |
Summary: | Add Toolbox update site to support updating a Toolbox to the next release | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 157 | ||
Attachments: |
mylyn/context/zip
To prevent an error popping up (help > check for updates), due to missing p2 meta-data at http://lamport.org/tlatoolbox, the attached content.xml dummy file should be placed there. |
Update site location has be decided on prior to the next release. The update site doesn't have to be created though. - Added check for updates command to help menu - Added ...p2.inf, which defines the location of the http://lamport.org/tlatoolbox update site - Fixed feature license, description and label Created attachment 99 [details]
mylyn/context/zip
Created attachment 100 [details] To prevent an error popping up (help > check for updates), due to missing p2 meta-data at http://lamport.org/tlatoolbox, the attached content.xml dummy file should be placed there. Fix released to HEAD. |
Summary: | Trusted SSL certificate needed to sign bundles for Java webstart | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
In order to remotely execute the tla2tools.jar with Java webstart via e.g. psexec, a trusted SSL certificate is needed. A self signed certificate causes a prompt to be shown, that requires the user to accept the self signed certificate. While this is acceptable for small machine numbers, it causes notable work with large numbers of machine. A user has to connect to each machine and accept the certificate. An alternative would be to manually add the self signed certificate to the trust store of each machine (which might be better supported by remote management/administration tools). |
Summary: | startup deadlock while determining spec size | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 260 | ||
Bug Blocks: | |||
Attachments: | mylyn/context/zip |
Hi Markus, I finally caught the Toolbox hanging when I started it in debug mode. I believe I was running it from the configuration I made from the ...product.product.product launch file. Appended below are the Eclipse console log, the full stack trace, and the contents of the .log file. I tried starting the same Eclipse four more times, twice in debug mode and twice normally, and it hung each time. On the fifth try (not in debug mode) it started up. Once again, the spec it was trying to open was the last "footFileName" it had printed before it hung. Leslie ================ Here's the Eclipse console log: osgi> !SESSION 2011-08-10 15:06:46.559 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_21 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data C:\lamport\tla\newtools\tla2-inria/../runtime-org.lamport.tla.toolbox.product.product.product -dev file:C:/lamport/tla/newtools/tla2-inria/.metadata/.plugins/org.eclipse.pde.core/org.lamport.tla.toolbox.product.product.product/dev.properties -os win32 -ws win32 -arch x86_64 -console -consolelog !ENTRY org.eclipse.osgi 2 0 2011-08-10 15:06:48.502 !MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists: !SUBENTRY 1 org.eclipse.osgi 2 0 2011-08-10 15:06:48.502 !MESSAGE Bundle org.eclipse.equinox.security.win32.x86_1.0.100.v20090520-1800 [23] was not resolved. !SUBENTRY 2 org.eclipse.equinox.security.win32.x86 2 0 2011-08-10 15:06:48.502 !MESSAGE Platform filter did not match: (& (osgi.os=win32) (osgi.arch=x86)) !SUBENTRY 1 org.eclipse.osgi 2 0 2011-08-10 15:06:48.503 !MESSAGE Bundle org.eclipse.core.resources.win32.x86_3.5.0.v20081020 [39] was not resolved. !SUBENTRY 2 org.eclipse.core.resources.win32.x86 2 0 2011-08-10 15:06:48.503 !MESSAGE Platform filter did not match: (& (osgi.os=win32) (osgi.arch=x86)) !SUBENTRY 1 org.eclipse.osgi 2 0 2011-08-10 15:06:48.503 !MESSAGE Bundle org.eclipse.swt.win32.win32.x86_3.5.2.v3557f [71] was not resolved. !SUBENTRY 2 org.eclipse.swt.win32.win32.x86 2 0 2011-08-10 15:06:48.503 !MESSAGE Platform filter did not match: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86)) !SUBENTRY 1 org.eclipse.osgi 2 0 2011-08-10 15:06:48.504 !MESSAGE Bundle org.eclipse.core.filesystem.win32.x86_1.1.0.v20080604-1400 [92] was not resolved. !SUBENTRY 2 org.eclipse.core.filesystem.win32.x86 2 0 2011-08-10 15:06:48.504 !MESSAGE Platform filter did not match: (& (osgi.os=win32) (osgi.arch=x86)) TLA+ Toolbox started without arguments. !ENTRY org.eclipse.core.resources 2 10035 2011-08-10 15:06:48.829 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. footFileName = C:\lamport\books\hyper-tla\specs\euclid\PCalEuclid.tla footFileName = C:\lamport\books\hyper-tla\specs\euclid\PCalEuclid_question.tla footFileName = C:\lamport\papers\paxos\simple\byztla\PConProof.tla ====================================== Here's the full stack trace: org.lamport.tla.toolbox.product.product.product [Eclipse Application] org.eclipse.equinox.launcher.Main at localhost:58677 (Suspended) Daemon System Thread [Attach Listener] (Suspended) Daemon System Thread [Signal Dispatcher] (Suspended) Daemon System Thread [Finalizer] (Suspended) waiting for: ReferenceQueue$Lock (id=46) Object.wait(long) line: not available [native method] ReferenceQueue<T>.remove(long) line: 118 ReferenceQueue<T>.remove() line: 134 Finalizer$FinalizerThread.run() line: 159 Daemon System Thread [Reference Handler] (Suspended) waiting for: Reference$Lock (id=47) Object.wait(long) line: not available [native method] Reference$Lock(Object).wait() line: 485 Reference$ReferenceHandler.run() line: 116 Thread [main] (Suspended) owns: Class<T> (org.lamport.tla.toolbox.Activator) (id=49) waited by: Thread [Worker-2] (Suspended) owns: RunnableLock (id=50) waited by: Thread [Thread-6] (Suspended) owns: RunnableLock (id=51) waited by: Thread [Thread-5] (Suspended) waiting for: Object (id=48) Object.wait(long) line: not available [native method] ThreadJob.joinRun(IProgressMonitor) line: 187 ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 232 WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 117 Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1747 Project.touch(IProgressMonitor) line: 1107 Spec.setLastModified() line: 194 WorkspaceSpecManager.setSpecLoaded(Spec) line: 235 WorkspaceSpecManager.<init>() line: 97 Activator.getSpecManager() line: 303 SizeControlContribution.updateSize() line: 90 SizeControlContribution.createControl(Composite) line: 78 SizeControlContribution(ControlContribution).fill(ToolBar, int) line: 97 ToolBarManager.update(boolean) line: 353 ToolBarManager.createControl(Composite) line: 111 TrimContributionManager$ToolBarTrimProxy.dock(int) line: 88 TrimContributionManager.update(boolean, boolean) line: 232 WorkbenchWindow.updateLayoutDataForContents() line: 3785 WorkbenchWindow.setLayoutDataForContents() line: 3796 WorkbenchWindow.createDefaultContents(Shell) line: 1114 WorkbenchWindowConfigurer.createDefaultContents(Shell) line: 625 ApplicationWorkbenchWindowAdvisor(WorkbenchWindowAdvisor).createWindowContents(Shell) line: 268 WorkbenchWindow.createContents(Composite) line: 1000 WorkbenchWindow(Window).create() line: 431 Workbench$60.runWithException() line: 3363 Workbench$60(StartupThreading$StartupRunnable).run() line: 31 RunnableLock.run() line: 35 UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 134 Display.runAsyncMessages(boolean) line: 3885 Display.readAndDispatch() line: 3506 ApplicationWorkbenchAdvisor(WorkbenchAdvisor).openWindows() line: 803 Workbench$28.runWithException() line: 1384 Workbench$28(StartupThreading$StartupRunnable).run() line: 31 RunnableLock.run() line: 35 UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 134 Display.runAsyncMessages(boolean) line: 3885 Display.readAndDispatch() line: 3506 Workbench.runUI() line: 2316 Workbench.access$4(Workbench) line: 2221 Workbench$5.run() line: 500 Realm.runWithDefault(Realm, Runnable) line: 332 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 493 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149 Application.start(IApplicationContext) line: 42 EclipseAppHandle.run(Object) line: 194 EclipseAppLauncher.runApplication(Object) line: 110 EclipseAppLauncher.start(Object) line: 79 EclipseStarter.run(Object) line: 368 EclipseStarter.run(String[], Runnable) line: 179 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 597 Main.invokeFramework(String[], URL[]) line: 559 Main.basicRun(String[]) line: 514 Main.run(String[]) line: 1311 Main.main(String[]) line: 1287 Thread [OSGi Console] (Suspended) Thread.sleep(long) line: not available [native method] FrameworkConsole.console() line: 270 FrameworkConsole.run() line: 224 Thread.run() line: 619 Daemon Thread [State Data Manager] (Suspended) Thread.sleep(long) line: not available [native method] StateManager.run() line: 306 Thread.run() line: 619 Daemon Thread [Framework Event Dispatcher] (Suspended) waiting for: EventManager$EventThread (id=22) Object.wait(long) line: not available [native method] EventManager$EventThread(Object).wait() line: 485 EventManager$EventThread.getNextEvent() line: 397 EventManager$EventThread.run() line: 333 Daemon Thread [Start Level Event Dispatcher] (Suspended) waiting for: EventManager$EventThread (id=25) Object.wait(long) line: not available [native method] EventManager$EventThread(Object).wait() line: 485 EventManager$EventThread.getNextEvent() line: 397 EventManager$EventThread.run() line: 333 Thread [643357997@qtp-1619519236-1 - Acceptor0 SelectChannelConnector@0.0.0.0:10996] (Suspended) owns: WindowsSelectorImpl (id=54) owns: Collections$UnmodifiableSet<E> (id=55) owns: Util$1 (id=56) WindowsSelectorImpl$SubSelector.poll0(long, int, int[], int[], int[], long) line: not available [native method] WindowsSelectorImpl$SubSelector.poll() line: 273 WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl$SubSelector) line: 255 WindowsSelectorImpl.doSelect(long) line: 136 WindowsSelectorImpl(SelectorImpl).lockAndDoSelect(long) line: 69 WindowsSelectorImpl(SelectorImpl).select(long) line: 80 SelectorManager$SelectSet.doSelect() line: 432 SelectChannelConnector$1(SelectorManager).doSelect(int) line: 185 SelectChannelConnector.accept(int) line: 124 AbstractConnector$Acceptor.run() line: 707 QueuedThreadPool$PoolThread.run() line: 520 Thread [255194190@qtp-1619519236-0] (Suspended) waiting for: QueuedThreadPool$PoolThread (id=27) Object.wait(long) line: not available [native method] QueuedThreadPool$PoolThread.run() line: 563 Daemon Thread [Timer-0] (Suspended) waiting for: TaskQueue (id=57) Object.wait(long) line: not available [native method] TimerThread.mainLoop() line: 509 TimerThread.run() line: 462 Thread [Worker-0] (Suspended) waiting for: Object (id=48) Object.wait(long) line: not available [native method] ThreadJob.joinRun(IProgressMonitor) line: 187 ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 232 StringPoolJob.run(IProgressMonitor) line: 99 Worker.run() line: 55 Thread [Thread-5] (Suspended) waiting for: RunnableLock (id=51) Object.wait(long) line: not available [native method] RunnableLock(Object).wait() line: 485 UISynchronizer(Synchronizer).syncExec(Runnable) line: 186 UISynchronizer.syncExec(Runnable) line: 150 Display.syncExec(Runnable) line: 4342 StartupThreading.runWithoutExceptions(StartupThreading$StartupRunnable) line: 94 Workbench.init() line: 1379 Workbench.access$32(Workbench) line: 1296 Workbench$58.run() line: 2304 Thread [Thread-6] (Suspended) waiting for: RunnableLock (id=50) Object.wait(long) line: not available [native method] RunnableLock(Object).wait() line: 485 UISynchronizer(Synchronizer).syncExec(Runnable) line: 186 UISynchronizer.syncExec(Runnable) line: 150 Display.syncExec(Runnable) line: 4342 StartupThreading.runWithoutExceptions(StartupThreading$StartupRunnable) line: 94 Workbench.doRestoreState(IMemento, MultiStatus) line: 3359 Workbench.access$30(Workbench, IMemento, MultiStatus) line: 3328 Workbench$54.run() line: 2114 Workbench.runStartupWithProgress(int, Runnable) line: 1827 Workbench.restoreState(IMemento) line: 2112 Workbench.access$28(Workbench, IMemento) line: 2083 Workbench$49.run() line: 1946 SafeRunner.run(ISafeRunnable) line: 42 Workbench.restoreState() line: 1890 WorkbenchConfigurer.restoreState() line: 183 WorkbenchAdvisor$1.run() line: 781 Thread [Worker-1] (Suspended) waiting for: WorkerPool (id=127) Object.wait(long) line: not available [native method] WorkerPool.sleep(long) line: 185 WorkerPool.startJob(Worker) line: 217 Worker.run() line: 51 Daemon Thread [Java indexing] (Suspended) waiting for: IndexManager (id=128) Object.wait(long) line: not available [native method] IndexManager(Object).wait() line: 485 IndexManager(JobManager).run() line: 381 Thread.run() line: 619 Thread [Worker-2] (Suspended) waiting for: Class<T> (org.lamport.tla.toolbox.Activator) (id=49) Activator.getSpecManager() line: 301 TLAParsingBuilder.build(int, Map, IProgressMonitor) line: 52 BuildManager$2.run() line: 627 SafeRunner.run(ISafeRunnable) line: 42 BuildManager.basicBuild(int, IncrementalProjectBuilder, Map, MultiStatus, IProgressMonitor) line: 170 BuildManager.basicBuild(IProject, int, ICommand[], MultiStatus, IProgressMonitor) line: 201 BuildManager$1.run() line: 253 SafeRunner.run(ISafeRunnable) line: 42 BuildManager.basicBuild(IProject, int, MultiStatus, IProgressMonitor) line: 256 BuildManager.basicBuildLoop(IProject[], IProject[], int, MultiStatus, IProgressMonitor) line: 309 BuildManager.build(int, IProgressMonitor) line: 341 AutoBuildJob.doBuild(IProgressMonitor) line: 140 AutoBuildJob.run(IProgressMonitor) line: 238 Worker.run() line: 55 Thread [Worker-3] (Suspended) waiting for: WorkerPool (id=127) Object.wait(long) line: not available [native method] WorkerPool.sleep(long) line: 185 WorkerPool.startJob(Worker) line: 217 Worker.run() line: 51 C:\Program Files\Java\jdk1.6.0_21\bin\javaw.exe (Aug 10, 2011 3:06:46 PM) Released thread decoupling to HEAD Created attachment 95 [details]
mylyn/context/zip
Solved (a while ago) |
Summary: | Simplify IDE workspace provisioning | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Setting up and keeping a local development workspace in sync should take as little work as possible. A first step is to use a .target as a common base to declare 3rd party dependencies. Released .target to HEAD Created attachment 96 [details]
mylyn/context/zip
Fixed in HEAD |
Summary: | java.lang.NumberFormatException: in WorkspaceSpecManager.getMostRecentlyOpenedSpec | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
LL: I just discovered the following bug. When I click File > Open Spec > Add New Spec and then click Browse on the popped up dialog, it works fine if I'm doing it with a spec open, but it does nothing if I do it with no spec open. The problem seems to be caused by something weird in the workspace. It happens (and is repeatable) when I run the Toolbox from Eclipse with the current workspace, but not when I run either the Eclipse-generated release or the Maven-generated release, or when I run the Toolbox from Eclipse with a fresh workspace. Appended below is the log. As you can see, the problem is a NumberFormatException at WorkspaceSpecManager.java:468. Simply adding another catch clause to catch and ignore the exception seems to solve the problem. However, I thought you should look at it and see if that sounds like a reasonable thing to do. Leslie !SESSION 2011-08-12 18:19:49.456 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_21 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data C:\lamport\tla\newtools\tla2-inria-workspace/../runtime-org.lamport.tla.toolbox.product.product.product -dev file:C:/lamport/tla/newtools/tla2-inria-workspace/.metadata/.plugins/org.eclipse.pde.core/org.lamport.tla.toolbox.product.product.product/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog !ENTRY org.eclipse.core.resources 2 10035 2011-08-12 18:20:52.466 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. !ENTRY org.eclipse.ui 4 4 2011-08-12 18:21:13.958 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2011-08-12 18:21:13.962 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.eclipse.ui 4 0 2011-08-12 18:21:20.509 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NumberFormatException: null at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.getMostRecentlyOpenedSpec(WorkspaceSpecManager.java:468) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage.handleBrowse(NewSpecWizardPage.java:186) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage$2.widgetSelected(NewSpecWizardPage.java:95) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:59) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !ENTRY org.eclipse.ui 4 0 2011-08-12 18:22:00.543 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NumberFormatException: null at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.getMostRecentlyOpenedSpec(WorkspaceSpecManager.java:468) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage.handleBrowse(NewSpecWizardPage.java:186) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage$2.widgetSelected(NewSpecWizardPage.java:95) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:59) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !ENTRY org.eclipse.ui 4 0 2011-08-12 18:22:28.872 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NumberFormatException: null at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.getMostRecentlyOpenedSpec(WorkspaceSpecManager.java:468) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage.handleBrowse(NewSpecWizardPage.java:186) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage$2.widgetSelected(NewSpecWizardPage.java:95) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:59) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) !ENTRY org.eclipse.ui 4 0 2011-08-12 18:22:55.268 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NumberFormatException: null at java.lang.Long.parseLong(Unknown Source) at java.lang.Long.parseLong(Unknown Source) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.getMostRecentlyOpenedSpec(WorkspaceSpecManager.java:468) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage.handleBrowse(NewSpecWizardPage.java:186) at org.lamport.tla.toolbox.ui.wizard.NewSpecWizardPage$2.widgetSelected(NewSpecWizardPage.java:95) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.lamport.tla.toolbox.ui.handler.NewSpecHandler.execute(NewSpecHandler.java:59) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Made org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.getRecentlyOpened() more robust against NPE and CoreExceptions. NPE indicates a more severe problem though which will cause problems on various ends. org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.specStorage must not contain invalid (null) entries. Investigation pending... Created attachment 97 [details]
mylyn/context/zip
Scratch comment #1, fix released to HEAD which reuses org.lamport.tla.toolbox.util.compare.SpecComparator. SpecComparator accounts for a null close date. The reason that the spec under question has no close date set in the first place, can probably be explained by an unclean Toolbox shutdown/ a crash. Created attachment 98 [details]
mylyn/context/zip
|
Summary: | "Error while loading manipulator" when trying to update Toolbox on Mac | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Mac OS | ||
Target Version: | --- |
Other platforms work fine. OSx however throws the following exception. !ENTRY org.eclipse.equinox.p2.touchpoint.eclipse 4 0 2011-08-16 17:01:34.587 !MESSAGE Error while loading manipulator. !STACK 0 java.lang.IllegalStateException: The framework persistent data location (/opt/toolbox/toolbox.app/Contents/MacOS/configuration) is not the same as the framework configuration location (/opt/toolbox/configuration). at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.checkConsistencyOfFwConfigLocAndFwPersistentDataLoc(EquinoxManipulatorImpl.java:65) at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.loadWithoutFwPersistentData(EquinoxManipulatorImpl.java:348) at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.load(EquinoxManipulatorImpl.java:319) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:54) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getLauncherData(LazyManipulator.java:117) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction.setLauncher(SetLauncherNameAction.java:44) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction.execute(SetLauncherNameAction.java:30) at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:35) at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:149) at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:78) at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:44) at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:73) at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:44) at org.eclipse.equinox.p2.operations.ProvisioningSession.performProvisioningPlan(ProvisioningSession.java:174) at org.eclipse.equinox.p2.operations.ProfileModificationJob.runModal(ProfileModificationJob.java:79) at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.eclipse.equinox.p2.engine 4 4 2011-08-16 17:01:34.599 !MESSAGE An error occurred while unconfiguring the items to uninstall !SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2011-08-16 17:01:34.599 !MESSAGE session context was:(profile=DefaultProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Unconfigure, operand=[R]org.lamport.tla.toolbox.product.product.executable.cocoa.macosx.x86_64.toolbox 1.3.2.201108161358 --> null, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction). !SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2011-08-16 17:01:34.599 !MESSAGE Error while loading manipulator. !STACK 0 java.lang.IllegalStateException: Error while loading manipulator. at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:58) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getLauncherData(LazyManipulator.java:117) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction.setLauncher(SetLauncherNameAction.java:44) at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction.execute(SetLauncherNameAction.java:30) at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:35) at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:149) at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:78) at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:44) at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:73) This is how this bug manifest UI-wise: An error occurred while unconfiguring the items to uninstall session context was:(profile=DefaultProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Unconfigure, operand=[R]org.lamport.tla.toolbox.product.product.executable.cocoa.macosx.x86_64.toolbox 1.3.2.201108161358 --> null, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetLauncherNameAction). Error while loading manipulator. Fix released to HEAD |
Summary: | Add update scheduler to toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The Toolbox may automatically check for updates. This is fortunately provided by equinox p2 ui. The Toolbox will check for updates by default at startup. Basic plumbing done, user documentation missing (do we need documentation for update)? Created attachment 101 [details]
mylyn/context/zip
Fix released to HEAD |
Summary: | Build includes pom.properties files which cause filenames too long warnings on Windows | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The files are not needed by the Toolbox at runtime and thus should be omitted from the zip files. Fixed in HEAD pom.properties (and pom.xml) are omitted from zip files. Created attachment 102 [details]
mylyn/context/zip
|
Summary: | Remove javacc build step from ant build | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | trivial | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
LL: "The parser should never be regenerated automatically with javacc. Depending on the changes, manual editing of some of the generated files may be necessary. Please remove anything from the build file that could conceivably cause it to be done. (I have some files explaining what needs to be done. I should add them to the repository.)" Removed in HEAd Created attachment 103 [details]
mylyn/context/zip
|
Summary: | Optional dependencies broken in recent Tycho build | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Fixed in HEAD as per https://bugs.eclipse.org/bugs/show_bug.cgi?id=355947#c4 Created attachment 105 [details]
mylyn/context/zip
|
Summary: | Rename Maven build output zip files to include version name | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
rename org.lamport.tla.toolbox.product.product-linux...zip to TLAToolbox-1.3.2-linux...zip Fixed in HEAD Created attachment 107 [details]
mylyn/context/zip
|
Summary: | Add refresh command to sync spec/model with filesystem | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If a Toolbox file is changed on the file system layer, the Toolbox does not automatically detect the change. Thus, refresh functionality is needed. This will be done as a "Refresh" context menu entry in the spec explorer. Fix released to HEAD Created attachment 106 [details]
mylyn/context/zip
|
Summary: | TLC stops if Queue Size grows to more than 2^31 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: |
screenshot after TLC stopped
mylyn/context/zip mylyn/context/zip |
Created attachment 108 [details]
screenshot after TLC stopped
Version 1.2.1 of 29 September 2010
(toolbox-1.2.1.win32.win32.x86_64)
OS is Windows Server 2003 data center edition, service pack 2 (2007).
I have a model-checking job that fails after 2 or 3 days (on a good 8-core
machine).
TLC just stops with no error.
It's pretty clear from the output that it's because Queue Size grows larger
than 2^31. I've pasted the end of the TLC console log below, and attached a
screenshot.
I tried pasting the spec below as well, but bugzilla rejected it as comments
cannot be larger than 64KB. It is the 'textbookSnapshotIsolation.tla' spec
that I sent to Leslie in an email last week.
Comments at the start of the spec show how to configure TLC (2 model values in
set Key, and 4 model values in set TxnId).
The invariant I was checking was
~ ReadOnlyAnomaly(history)
This is an attempt to confirm that the above invariant is violated in a way
reported in a recent published paper (see end of spec for details).
I know from some experimentation that TLC gets close to finding the violation I
am looking for -- but it runs into the overflow bug before doing so.
thanks,
Chris
… snip
@!@!@STARTMSG 2221:0 @!@!@
line 8, col 38 to line 8, col 52 of module textbookSnapshotIsolation:
1242532628
@!@!@ENDMSG 2221 @!@!@
@!@!@STARTMSG 2202:0 @!@!@
End of statistics.
@!@!@ENDMSG 2202 @!@!@
@!@!@STARTMSG 2200:0 @!@!@
Progress(14) at 2011-09-10 02:19:53: 4968408451 states generated, -1005007939
distinct states found, -2147483642 states left on queue.
@!@!@ENDMSG 2200 @!@!@
@!@!@STARTMSG 2199:0 @!@!@
4968408451 states generated, -1005007939 distinct states found, -2147483642
states left on queue.
@!@!@ENDMSG 2199 @!@!@
@!@!@STARTMSG 2194:0 @!@!@
The depth of the complete state graph search is 14.
@!@!@ENDMSG 2194 @!@!@
@!@!@STARTMSG 2186:0 @!@!@
Finished. (2011-09-10 02:21:24)
@!@!@ENDMSG 2186 @!@!@
Hi Chris, Leslie is currently traveling. Can you send textbookSnapshotIsolation.tla to bugzilla.tlaplus.net <at> lemmster <dot> de too? Thanks Markus P.S.: How many TLC worker threads do you use? tlc2.tool.queue.StateQueue.len has been converted from int to long. Created attachment 111 [details]
mylyn/context/zip
Hi Chris, I have fixed StateQueue to support more than 2^31 states. Do you wanna test drive a recent nightly build [0] and let me know if it fixes your problem? Thanks Markus [0] http://tla.msr-inria.inria.fr/tlatoolbox/products/ Separated long running tlc2.tool.queue.DiskStateQueueTest from short/smoke tests to keep test execution time minimal. Fix released to HEAD. Follow up "negative seek offset" bug is tracked as bug #210. Created attachment 113 [details]
mylyn/context/zip
|
Summary: | DND does not work in TLA editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
DND'ing a text block in the tla editor reveals the following exception: !ENTRY org.eclipse.ui 4 0 2011-09-12 10:24:39.779 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.eclipse.ui.internal.EditorSiteDragAndDropServiceImpl$1.dragLeave(EditorSiteDragAndDropServiceImpl.java:107) at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:70) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.swt.dnd.DropTarget.drag_leave(DropTarget.java:430) at org.eclipse.swt.dnd.DropTarget.Drag_Leave(DropTarget.java:264) at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8189) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1238) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2237) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3159) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) A side effect of this bug causes the editor to crash if: 0) An editor text block has been moved (causing the aforementioned exception) 1) Cut & Paste is used on the (full) editor content !ENTRY org.eclipse.ui 4 0 2011-09-07 17:55:06.195 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.IllegalArgumentException: Index out of bounds at org.eclipse.swt.SWT.error(SWT.java:4064) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.custom.StyledText.getLocationAtOffset(StyledText.java:4329) at org.eclipse.swt.custom.StyledTextDropTargetEffect$1.handleEvent(StyledTextDropTargetEffect.java:71) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1454) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4218) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4886) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:334) at org.eclipse.ui.internal.EditorManager.saveAll(EditorManager.java:1176) at org.eclipse.ui.internal.Workbench$19.run(Workbench.java:1181) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.Workbench.saveAllEditors(Workbench.java:1130) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1048) at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1032) at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1276) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1274) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1246) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:731) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710) at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:832) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:830) at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741) at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308) at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4164) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4253) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4253) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) https://bugs.eclipse.org/287486#c5 outlines a viable fix. Fix released to HEAD Created attachment 109 [details]
mylyn/context/zip
|
Summary: | Linear growth factor in MemStateQueue quickly exceeds heap space | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Linearly doubling the state queue size exceeds the Java head space quickly. If the queue size reaches a certain size, doubling makes little sense anyway, since the new states found does not follow this growth rate. The capacity of MemStateQueue has be change to grow with (oldLength * 4) / 3 + 1). Created attachment 110 [details]
mylyn/context/zip
|
Summary: | Bug at ResourceHelper line 1477 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
osgi> TLA+ Toolbox started without arguments. !SESSION 2011-09-18 08:57:03.414 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_26 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data C:\lamport\tla\newtools\tla2-inria-workspace/../runtime-org.lamport.tla.toolbox.product.product.product -dev file:C:/lamport/tla/newtools/tla2-inria-workspace/.metadata/.plugins/org.eclipse.pde.core/org.lamport.tla.toolbox.product.product.product/dev.properties -os win32 -ws win32 -arch x86 -console -consolelog !ENTRY org.eclipse.core.resources 2 10035 2011-09-18 08:57:09.530 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. footFileName = C:\lamport\papers\paxos\simple\byztla\BPConProof.tla footFileName = C:\lamport\mytemp\BiqQueue.tla footFileName = C:\lamport\papers\proof\Calculus.tla footFileName = C:\lamport\mytemp\NewTest.tla footFileName = C:\lamport\tla\newtools\tlapm\doc\vstte12\Peterson.tla footFileName = C:\lamport\tla\newtools\tlapm\doc\vstte12\RawPeterson.tla footFileName = C:\lamport\mytemp\Test.tla footFileName = C:\lamport\mytemp\Test92.tla footFileName = C:\lamport\tla\pluscal\bugs\bug_11_09_13.tla Spec build invoked on Test ... Added a parse result listener. There are now 1 listeners. Resulting status is: parsed ... build invocation finished. !ENTRY org.eclipse.equinox.p2.ui.sdk.scheduler 4 0 2011-09-18 08:57:16.571 !MESSAGE The update checker service is not initialized !ENTRY org.eclipse.equinox.p2.ui.sdk.scheduler 4 0 2011-09-18 08:57:16.575 !MESSAGE The update checker service is not initialized Removed a parse result listener. There are now 0 listeners. !ENTRY org.eclipse.ui 4 4 2011-09-18 08:57:31.570 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2011-09-18 08:57:31.572 !MESSAGE Unable to process element: view in perspective extension: null Spec build invoked on Calculus ... Resulting status is: parsed ... build invocation finished. Added a parse result listener. There are now 1 listeners. Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Opening SetOfIntervals(Calculus.tla at offset: 213, length: 14) Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 Bug at ResourceHelper line 1477 A trivial problem caused by not realizing that an empty value could produce a zero-length array rather than a null value in one case. |
Summary: | tlc2.util.RandomAccessFile maintains read/write statistics which are never used | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
tlc2.util.RandomAccessFile maintains statistics for all API methods. However, these statistics are never used anywhere which makes them an unnecessary performance bottleneck. Especially since all methods excessively call System.currentTimeMillis(). Fixed by changing class hierarchy to directly inherit from java.io.RandomAccessFile instead of tlc2.util.RandomAccessFile. Created attachment 112 [details]
mylyn/context/zip
|
Summary: | java.IO.Exception: negative seek offset | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | ||
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
For large models TLC crashes with a "java.IO.Exception: negative seek offset" exception while accessing the fingerprint disk storage (file "MC_0.fp"). No stack trace is shown nor written to any log. The precise error is: Error: accessing file D:\textbookSnapshotIsolation.toolbox\ReadOnlyAnomaly (real not forced history), 2 keys 4 txns\11-09-17-19-02-13\MC_1.fp java.io.IOException: Negative seek offset This indicates that the exception occurs in tlc2.tool.fp.DiskFPSet.diskLookup(long). One potential cause might be the platform specific max file size limit. Example output of when the index turns negative. Warning: MidEntry turned negative: -1 (Use the -nowarning option to disable this warning.) Error: DiskGraph.toString() java.io.IOException: Negative seek offset at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:437) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:229) at tlc2.tool.fp.DiskFPSetTest.testMaxDiskFPSetSize(DiskFPSetTest.java:56) Added -fpbits parameter to externally configure tlc2.tool.fp.MultiFPSet.fpbits at startup. This determines the amount of nested tlc2.tool.fp.DiskFPSet.DiskFPSet(int) used at runtime. A DiskFPSet is constrained by a) the file systems max file size and b) a long overflow when addressing the disk backing storage. Increasing -fpbits does not prevent a) or b), it just makes both less likely/happen later. Created attachment 114 [details]
mylyn/context/zip
Chris Newcombe: New information, possibly related to the older 'negative seek' bug. I've been running a non-distributed test on an 8-core box for 7 days 19 hours. It's generated quite a lot of states. It just gave this error, which I have not seen before: DiskFPSet.mergeNewEntries: 9223367739864457495 is already on disk. There isn't a stack trace. The "Running TLC model checker" window is still still open But all of the CPUs are pretty much idle. End of log, containing the error: Checkpointing of run D:\serializableSnapshotIsolation.toolbox\serializable, 2 keys 4 txns FULL symmetry\11-10-01-22-25-12 @!@!@ENDMSG 2195 @!@!@ @!@!@STARTMSG 2196:0 @!@!@ Checkpointing completed at (2011-10-09 17:47:10) @!@!@ENDMSG 2196 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(19) at 2011-10-09 17:47:10: 5481360968 states generated, 31649964 distinct states found, 2574512565 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(19) at 2011-10-09 17:48:10: 5481979264 states generated, 32156610 distinct states found, 2574851100 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(19) at 2011-10-09 17:49:10: 5482633400 states generated, 32691779 distinct states found, 2575200301 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2195:0 @!@!@ Checkpointing of run D:\serializableSnapshotIsolation.toolbox\serializable, 2 keys 4 txns FULL symmetry\11-10-01-22-25-12 @!@!@ENDMSG 2195 @!@!@ @!@!@STARTMSG 2196:0 @!@!@ Checkpointing completed at (2011-10-09 17:50:11) @!@!@ENDMSG 2196 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(19) at 2011-10-09 17:50:11: 5483254957 states generated, 33193657 distinct states found, 2575520845 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2201:0 @!@!@ The coverage statistics at 2011-10-09 17:50:11 @!@!@ENDMSG 2201 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 14 to line 128, col 20 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 23 to line 128, col 35 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 38 to line 128, col 52 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 55 to line 128, col 64 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 67 to line 128, col 77 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 128, col 80 to line 128, col 97 of module serializableSnapshotIsolation: 598320930 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 399, col 8 to line 399, col 93 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 400, col 8 to line 400, col 60 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 401, col 8 to line 401, col 66 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 406, col 8 to line 406, col 63 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 407, col 8 to line 407, col 64 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 408, col 8 to line 408, col 68 of module serializableSnapshotIsolation: 1683759288 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 417, col 8 to line 417, col 66 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 418, col 20 to line 418, col 32 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 418, col 35 to line 418, col 49 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 418, col 52 to line 418, col 61 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 418, col 64 to line 418, col 74 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 418, col 77 to line 418, col 94 of module serializableSnapshotIsolation: 5722859 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 468, col 19 to line 468, col 114 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 469, col 19 to line 471, col 79 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 472, col 19 to line 474, col 81 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 475, col 19 to line 477, col 76 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 478, col 19 to line 480, col 77 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 481, col 19 to line 483, col 84 of module serializableSnapshotIsolation: 1123037941 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 565, col 20 to line 566, col 92 of module serializableSnapshotIsolation: 666571768 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 567, col 32 to line 567, col 44 of module serializableSnapshotIsolation: 666571768 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 567, col 47 to line 567, col 61 of module serializableSnapshotIsolation: 666571768 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 571, col 20 to line 571, col 92 of module serializableSnapshotIsolation: 666571768 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 611, col 23 to line 613, col 72 of module serializableSnapshotIsolation: 666571768 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 617, col 25 to line 617, col 73 of module serializableSnapshotIsolation: 272119505 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 618, col 35 to line 618, col 45 of module serializableSnapshotIsolation: 394452263 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 681, col 8 to line 681, col 87 of module serializableSnapshotIsolation: 678019497 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 682, col 8 to line 682, col 72 of module serializableSnapshotIsolation: 678019497 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 683, col 8 to line 683, col 66 of module serializableSnapshotIsolation: 678019497 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 741, col 16 to line 743, col 68 of module serializableSnapshotIsolation: 130798841 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 748, col 16 to line 748, col 64 of module serializableSnapshotIsolation: 130798841 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 750, col 26 to line 750, col 43 of module serializableSnapshotIsolation: 130798841 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 763, col 24 to line 763, col 33 of module serializableSnapshotIsolation: 547220656 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 763, col 36 to line 763, col 46 of module serializableSnapshotIsolation: 547220656 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 763, col 49 to line 763, col 66 of module serializableSnapshotIsolation: 547220656 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 834, col 16 to line 834, col 71 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 835, col 28 to line 835, col 34 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 835, col 37 to line 835, col 49 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 835, col 52 to line 835, col 61 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 835, col 64 to line 835, col 74 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 835, col 77 to line 835, col 94 of module serializableSnapshotIsolation: 371070760 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 844, col 20 to line 844, col 127 of module serializableSnapshotIsolation: 87685200 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 848, col 24 to line 848, col 74 of module serializableSnapshotIsolation: 43842600 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 849, col 36 to line 849, col 50 of module serializableSnapshotIsolation: 43842600 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 867, col 24 to line 867, col 81 of module serializableSnapshotIsolation: 43842600 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 868, col 24 to line 869, col 87 of module serializableSnapshotIsolation: 43842600 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 870, col 20 to line 870, col 80 of module serializableSnapshotIsolation: 87685200 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 871, col 20 to line 871, col 81 of module serializableSnapshotIsolation: 87685200 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 872, col 20 to line 872, col 85 of module serializableSnapshotIsolation: 87685200 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 891, col 12 to line 891, col 126 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 892, col 12 to line 892, col 67 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 893, col 12 to line 893, col 67 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 894, col 12 to line 894, col 68 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 895, col 12 to line 895, col 72 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 896, col 24 to line 896, col 38 of module serializableSnapshotIsolation: 269066713 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2202:0 @!@!@ End of statistics. @!@!@ENDMSG 2202 @!@!@ @!@!@STARTMSG 2195:0 @!@!@ Checkpointing of run D:\serializableSnapshotIsolation.toolbox\serializable, 2 keys 4 txns FULL symmetry\11-10-01-22-25-12 @!@!@ENDMSG 2195 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ @!@!@STARTMSG 2166:0 @!@!@ DiskFPSet.mergeNewEntries: 9223367739864457495 is already on disk. @!@!@ENDMSG 2166 @!@!@ @!@!@ENDMSG 1000 @!@!@ @!@!@STARTMSG 2121:1 @!@!@ The behavior up to this point is: @!@!@ENDMSG 2121 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 1: <Initial predicate> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = <<>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 2: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 3: <Action line 876, col 5 to line 903, col 48 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {K0} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 4: <Action line 876, col 5 to line 903, col 48 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {K0, K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 5: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {K0, K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 6: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 7: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 8: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 9: <Action line 876, col 5 to line 903, col 48 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 10: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 11: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {K1} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 12: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {K0, K1} @@ T3 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 13: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {K0, K1} @@ T3 :> {K0}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 14: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K1, ver |-> T0] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {K0, K1} @@ T3 :> {K0, K1}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 15: <Action line 876, col 5 to line 903, col 48 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {K1} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K1, ver |-> T0], [op |-> "write", txnid |-> T2, key |-> K1] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {} @@ T2 :> {K0, K1} @@ T3 :> {K0, K1}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> TRUE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 16: <Action line 518, col 5 to line 618, col 45 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {K1} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K1, ver |-> T0], [op |-> "write", txnid |-> T2, key |-> K1], [op |-> "read", txnid |-> T1, key |-> K0, ver |-> T1] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {K0} @@ T2 :> {K0, K1} @@ T3 :> {K0, K1}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> TRUE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 17: <Action line 876, col 5 to line 903, col 48 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {K1} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> TRUE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K1, ver |-> T0], [op |-> "write", txnid |-> T2, key |-> K1], [op |-> "read", txnid |-> T1, key |-> K0, ver |-> T1] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {K0} @@ T2 :> {K0, K1} @@ T3 :> {K0, K1}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> K1 @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> TRUE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 18: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> TRUE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "write", txnid |-> T0, key |-> K0], [op |-> "write", txnid |-> T0, key |-> K1], [op |-> "read", txnid |-> T0, key |-> K1, ver |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "write", txnid |-> T1, key |-> K0], [op |-> "begin", txnid |-> T3], [op |-> "read", txnid |-> T2, key |-> K1, ver |-> T0], [op |-> "read", txnid |-> T2, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K0, ver |-> T0], [op |-> "read", txnid |-> T3, key |-> K1, ver |-> T0], [op |-> "write", txnid |-> T2, key |-> K1], [op |-> "read", txnid |-> T1, key |-> K0, ver |-> T1], [ op |-> "abort", txnid |-> T2, reason |-> "in attempted commit, to preserve serializability" ] >> /\ holdingSIREADlocks = (T0 :> {K1} @@ T1 :> {K0} @@ T2 :> {} @@ T3 :> {K0, K1}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> K1 @@ T2 :> NoLock @@ T3 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> TRUE @@ T2 :> FALSE @@ T3 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2196:0 @!@!@ Checkpointing completed at (2011-10-09 18:02:35) @!@!@ENDMSG 2196 @!@!@ Chris Newcombe: This time, it did not delete the MC*.fp file – info below. Of course, it didn’t hit the negative seek offset either. But another test on a different host, running for just as long, did just hit the negative seek offset error (and deleted its files as usual). So this file size might possibly be a low estimate of the size that causes the negative seek offset error. (If it’s caused by a size issue.) Directory of D:\serializableSnapshotIsolation.toolbox\serializable, 2 keys 4 txns FULL symmetry\11-10-01-22-25-12 10/01/2011 10:25 PM 0 MC.st 10/09/2011 06:02 PM 16 MC.st.chkpt 10/09/2011 03:42 PM 17,179,869,408 MC_0.fp 10/09/2011 05:54 PM 0 MC_0.tmp 10/09/2011 03:45 PM 17,179,869,424 MC_1.fp 5 File(s) 34,359,738,848 bytes 0 Dir(s) 736,461,398,016 bytes free D:\serializableSnapshotIsolation.toolbox\serializable, 2 keys 4 txns FULL symmet ry\11-10-01-22-25-12> The drive was not full (see attached picturePictures attached (sorry, this is the easiest way to capture the information) ~ 154GB of 839GB used MidEntry turned negative: ================ loEntry: -2147483648 midEntry: -2147483390 hiEntry: -2147482624 loVal: 9223361181405976355 hiVal: 9223365871748060008 Fix released to HEAD Created attachment 132 [details]
mylyn/context/zip
|
Summary: | Error when looking for PlusCal algorithm | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
The TLA spec
The Console output. |
Opening the spec or trivially modifying it and saving it causes the exception in the attachment. However a new spec that is identical to this except for the module name does not cause the error. Created attachment 115 [details]
The TLA spec
Created attachment 116 [details]
The Console output.
An examination of the code indicates that this exception occurred because performing a find method call with an offset of 0 on a FindReplaceDocumentAdapter object produced a BadLocationException. An examination of the code of the FindReplaceDocumentAdapter indicates that this can happen only if the document being searched has length less than or equal to 0. If programmers had ever heard of the concept of documentation, it might be possible to determine if there are some valid circumstances in which a document that is not empty can have a non-positive length. Since there is no documentation, I will assume that the length of a non-empty document should be positive, and therefore this is a bug in the Eclipse infrastructure. This conclusion is supported by the fact that it was repeatable with that particular spec, but disappeared when I deleted the spec, closed the Toolbox, re-opened the Toolbox, and then recreated the spec. (Closing the Toolbox was necessary to make it disappear.) However, there is still a bug. If the document is empty (has length 0), then this error repeatably occurs. I would call that a bug in the find method, but of course that method can't have any bugs because it has no specification, and it can't fail to do what it is supposed to do if there's nothing that it's supposed to do. In any case, since a TLA specification file with no characters is not syntactically correct, so I think we can live with this bug. |
Summary: | Coverage checking crashes distributed model checking (tlc2.tool.WorkerException) after a few seconds of work with even a single worker | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | blocker | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
I’m trying ‘Run in distributed mode’ for the first time. I’m using Toolbox Version 1.4.0 of 16 September 2011. (Doing ‘check for updates’ says No Updates Found). From: https://tla.msr-inria.inria.fr/tlatoolbox/products/TLAToolbox-1.4.0-linux.gtk.x86_64.zip I believe I have it set up correctly. I can start multiple workers on multiple machines, and they do register and start work. But model-checking always exits a few seconds after starting, with this error: tlc2.tool.WorkerException at tlc2.tool.distributed.TLCWorker.getNextStates(TLCWorker.java:123) …. (Full TLC logs are pasted below.) Even if I try it with a single worker, it always exits with that exception, after checking a constant number of states. The final number of states seems deterministic, and depends on the specification. It does not seem to depend on which single worker does the checking. e.g. - For one specification (serializableSnapshotIsolation) the number of states is 25374 - For another specification (textbookSnapshotIsolation.tla) the number of states is 21618 I have not yet looked for patterns when using more than one worker. I’ll paste TLC logs first (master and single worker). After that, I’ll describe how I created the nodes (which OS etc). If necessary we I could create a set of EC2 nodes and give you direct SSH access, if you need to examine this in situ. Let me know. Regards, Chris -- The TLC console log from the master: (the worker’s log is after this) TLC Server Version 2.03 of 20 July 2011 @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file /mnt/serializableSnapshotIsolation.toolbox/serializable, 2 keys, 4 txns, FULL symmetry/MC.tla Parsing file /mnt/serializableSnapshotIsolation.toolbox/serializable, 2 keys, 4 txns, FULL symmetry/serializableSnapshotIsolation.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126/tla2sany/StandardModules/TLC.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126/tla2sany/StandardModules/Integers.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126/tla2sany/StandardModules/Sequences.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126/tla2sany/StandardModules/FiniteSets.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201109181126/tla2sany/StandardModules/Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module FiniteSets Semantic processing of module TLC Semantic processing of module serializableSnapshotIsolation Semantic processing of module MC @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2011-10-03 22:58:38) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2189:0 @!@!@ Computing initial states... @!@!@ENDMSG 2189 @!@!@ @!@!@STARTMSG 2190:0 @!@!@ Finished computing initial states: 1 distinct state(s) generated. @!@!@ENDMSG 2190 @!@!@ @!@!@STARTMSG 7000:0 @!@!@ TLC server at ip-10-167-58-139 is ready (2011-10-03 22:58:39) @!@!@ENDMSG 7000 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-167-25-202.us-west-1.compute.internal:53005 completed (2011-10-03 22:58:49) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ %1% @!@!@ENDMSG 1000 @!@!@ tlc2.tool.WorkerException at tlc2.tool.distributed.TLCWorker.getNextStates(TLCWorker.java:123) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy2.getNextStates(Unknown Source) at tlc2.tool.distributed.TLCWorkerSmartProxy.getNextStates(TLCWorkerSmartProxy.java:34) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:120) The behavior up to this point is: @!@!@STARTMSG 2121:1 @!@!@ The behavior up to this point is: @!@!@ENDMSG 2121 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 1: <Initial predicate> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 2: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 3: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 4: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 5: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 6: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 7: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "commit", txnid |-> T2] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 8: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "commit", txnid |-> T2], [op |-> "begin", txnid |-> T3] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 7003:0 @!@!@ Worker: rmi://ip-10-167-25-202.us-west-1.compute.internal:53005 Sent: 19646 Rcvd: 25338 (2011-10-03 22:59:08) @!@!@ENDMSG 7003 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(8) at 2011-10-03 22:59:08: 25375 states generated, 19646 distinct states found, 16644 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2199:0 @!@!@ 25375 states generated, 19646 distinct states found, 16644 states left on queue. @!@!@ENDMSG 2199 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2011-10-03 22:59:08) @!@!@ENDMSG 2186 @!@!@ The worker says: ubuntu@ip-10-167-25-202:/mnt$ java -cp tla2tools.jar tlc2.tool.distributed.TLCWorker ec2-50-18-128-101.us-west-1.compute.amazonaws.com & [1] 2906 ubuntu@ip-10-167-25-202:/mnt$ TLC Worker Version 2.03 of 20 July 2011 Parsing file /tmp/1317682729698/MC.tla Parsing file /tmp/1317682729698/serializableSnapshotIsolation.tla Parsing file /tmp/TLC.tla Parsing file /tmp/Integers.tla Parsing file /tmp/Sequences.tla Parsing file /tmp/FiniteSets.tla Parsing file /tmp/Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module FiniteSets Semantic processing of module TLC Semantic processing of module serializableSnapshotIsolation Semantic processing of module MC Starting... (2011-10-03 22:58:50) TLC worker ready at: Mon Oct 03 22:58:50 UTC 2011 ip-10-167-25-202.us-west-1.compute.internal, work completed at: Mon Oct 03 22:59:09 UTC 2011 Computed: 25374 Thank you! ----- How I created the master and worker machines: I’m testing on the Amazon EC2 cloud. I’ll be writing a blog or mailinglist-post with these instructions when I have them working. For now it’s probably easier if you just access the nodes I’ve created. The instructions below assume a little bit of familiarity with EC2 – e.g. that you have an AWS account signed up with EC2, and have downloaded the pk-XXX.pem and cert-XXX.pem files required to call the public EC2 API (to create instances etc.) #1 Create an EC2 ssh keypair – used for both the master and the workers. In commands below, my keypair is called: tlakp1 From the AWS Management console, download the private key to your laptop/desktop machine. #2. Create an EC2 security group – used for both the master and the workers. In the commands that follow, my security group is called: tlasg a. Open Inbound TCP/IP port range 1024-65535 to 0.0.0.0./0 in tlasg Note: from: sudo netstat -lp -A inet | grep java I found that the master listens on 10996-10997, but both the master and workers listen on apparently random ports that change on each run. Hence the firewall has to be almost completely open. #3 Create an EC2 instance that will be the master. I chose a recent build of Ubuntu linux because: - We want to easily automate the workers, so really we want linux. Ubuntu has a tool called cloud-init that - As the workers download software from the master, presumably the workers have to be the same OS as the master. - The master needs a GUI with remote access. Ubuntu Server can be easily upgraded to support a good remote GUI. The master needs disk-space for TLC’s state. (Seems like TLC remote workers don’t write to their own disks.) Empirically, TLC performs best with EC2 ‘ephemeral’ disks – i.e. local disks, not network-attached EBS volumes. The commands below create ephemeral local disks with a filesystem mounted as /mnt. The commands below create 64-bit instances in AWS region ‘us-west-1’. For AMIs that are 32-bit and/or different AWS regions, see http://alestic.com/ Create the master instance, with ephemeral drives: ec2-run-instances ami-0b6f3c4e --region us-west-1 -t m1.xlarge -n 1 -b '/dev/sdb=ephemeral0' -b '/dev/sdc=ephemeral1' -b '/dev/sdd=ephemeral2' -b '/dev/sde=ephemeral3' -g tlasg -k tlakp1 –K pk-MYFILE.pem -C cert-MYFILE.pem Wait until the master instance is running, by repeating this command until the new instance is in ‘running’ state: ec2-describe-instances --region us-west-1 -K pk-${MY_AWS_EC2_X509}.pem -C cert-${MY_AWS_EC2_X509}.pem (the above command will tell you the public DNS name of the instance, of the form: ec2-*****.us-west-1.compute.amazonaws.com) #4 SSH into the master server and install Sun’s JDK, and the Ubuntu desktop, and the Free NX remote-desktop server software: ssh -o ServerAliveInterval=60 -i tlakp1.pem ubuntu@ec2-MYINSTANCENAME.us-west-1.compute.amazonaws.com install java hotspot JDK sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jdk sudo touch /etc/profile.d/java.sh sudo sh -c "echo 'export JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile.d/java.sh" sudo sh -c "echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile.d/java.sh" source /etc/profile.d/java.sh install ubuntu GUI (takes a while export DEBIAN_FRONTEND=noninteractive sudo -E apt-get update sudo -E apt-get install -y ubuntu-desktop install FreeNX server sudo add-apt-repository ppa:freenx-team sudo sed -i ‘s/natty/lucid/g’ /etc/apt/sources.list.d/freenx-team-ppa-natty.list sudo apt-get update sudo apt-get install freenx wget https://bugs.launchpad.net/freenx-server/+bug/576359/+attachment/1378450/+files/nxsetup.tar.gz tar -xvf nxsetup.tar.gz sudo cp nxsetup /usr/lib/nx/nxsetup sudo /usr/lib/nx/nxsetup --install (Answer ‘n’ to the question about creating a key.) Enable password authentication on the ssh server Edit /etc/ssh/sshd_config and sudo nano /etc/ssh/sshd_config (set PasswordAuthentication to yes then save the file, and exit the editor) Restart sshd process to pick up the change: sudo /etc/init.d/ssh restart The user for remote desktop will be ‘ubuntu’. Set a password with: sudo passwd ubuntu Install TLA toolbox on the /mnt drive, not the boot drive. sudo chown ubuntu /mnt cd /mnt wget 'https://tla.msr-inria.inria.fr/tlatoolbox/products/TLAToolbox-1.4.0-linux.gtk.x86_64.zip' unzip TLAToolbox-1.4.0-linux.gtk.x86_64.zip #5 On your laptop or desktop, install the free NX remote-deskstop client: Download the client from http://www.nomachine.com/download.php. After install Click on the NX Connection wizard to setup a new connection. Put the master’s EC2 public DNS name in the Host field. Port is 22. The login user is ubuntu. #6 Using the GUI via NX client from your laptop/desktop, run the Toolbox and create the spec and model. #7 Set up workers, install Sun JDK, and start TLC workers by pointing them to the master server. E.g. Create some workers (number is controlled with -n 2): ec2-run-instances ami-0b6f3c4e --region us-west-1 -t m2.4xlarge -n 2 -b '/dev/sdb=ephemeral0' -b '/dev/sdc=ephemeral1' -g tlasg -k tlakp1 -K pk-${MY_AWS_EC2_X509}.pem -C cert-${MY_AWS_EC2_X509}.pem Wait until they are running, by repeating this command until the new instance(s) are in ‘running’ state: ec2-describe-instances --region us-west-1 -K pk-${MY_AWS_EC2_X509}.pem -C cert-${MY_AWS_EC2_X509}.pem (the above command will tell you the public DNS name of the instance, of the form: ec2-*****.us-west-1.compute.amazonaws.com) For each worker: ssh -o ServerAliveInterval=60 -i tlakp1.pem ubuntu@ec2-WORKER-PUBLIC-DNS-NAME.us-west-1.compute.amazonaws.com sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jdk sudo touch /etc/profile.d/java.sh sudo sh -c "echo 'export JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile.d/java.sh" sudo sh -c "echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile.d/java.sh" source /etc/profile.d/java.sh Connect the worker to the master, get TLC, and start the worker sudo chown ubuntu /mnt cd /mnt wget http://ec2-MASTER-EC2-PUBLIC-DNS-NAME.us-west-1.compute.amazonaws.com:10996/files/tla2tools.jar java -cp tla2tools.jar tlc2.tool.distributed.TLCWorker ec2-MASTER-EC2-PUBLIC-DNS-NAME.us-west-1.compute.amazonaws.com Hi Chris, I assume textbookSnapshotIsolation.tla specification is same spec as with bug #205? And does TLC get past 21618 states for textbookSnapshotIsolation in non-distributed work? Thanks Markus Chris, the latest CI zips [0] contain improved exception handling that should not swallow the nested cause. Can you give it a try? Thanks Markus Chris via direct email: Hi Markus, Leslie >>the latest CI zips [0] contain improved exception handling that should not >>swallow the nested cause. Can you give it a try? I just tried the following version, with 1 remote worker and the same spec as before. https://tla.msr-inria.inria.fr/tlatoolbox/ci/products/ TLAToolbox-1.4.1-linux.gtk.x86_64.zip 06-Oct-2011 11:43 47216569 Here's the output: TLC Server Version 2.03 of 20 July 2011 @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file /mnt/serializableSnapshotIsolation.toolbox/serializable, 2 keys, 4 txns, FULL symmetry/MC.tla Parsing file /mnt/serializableSnapshotIsolation.toolbox/serializable, 2 keys, 4 txns, FULL symmetry/serializableSnapshotIsolation.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201110061135/tla2sany/StandardModules/TLC.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201110061135/tla2sany/StandardModules/Integers.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201110061135/tla2sany/StandardModules/Sequences.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201110061135/tla2sany/StandardModules/FiniteSets.tla Parsing file /mnt/toolbox/plugins/org.lamport.tlatools_1.0.0.201110061135/tla2sany/StandardModules/Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module FiniteSets Semantic processing of module TLC Semantic processing of module serializableSnapshotIsolation Semantic processing of module MC @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2011-10-07 15:28:39) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2189:0 @!@!@ Computing initial states... @!@!@ENDMSG 2189 @!@!@ @!@!@STARTMSG 2190:0 @!@!@ Finished computing initial states: 1 distinct state(s) generated. @!@!@ENDMSG 2190 @!@!@ @!@!@STARTMSG 7000:0 @!@!@ TLC server at ip-10-167-58-139 is ready (2011-10-07 15:28:40) @!@!@ENDMSG 7000 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-167-25-202.us-west-1.compute.internal:40387 completed (2011-10-07 15:28:43) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ %1% @!@!@ENDMSG 1000 @!@!@ tlc2.tool.WorkerException at tlc2.tool.distributed.TLCWorker.getNextStates(TLCWorker.java:123) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy2.getNextStates(Unknown Source) at tlc2.tool.distributed.TLCWorkerSmartProxy.getNextStates(TLCWorkerSmartProxy.java:34) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:120) Caused by: java.lang.NullPointerException at tlc2.tool.TLCStateMutSource.copy(TLCStateMutSource.java:124) at tlc2.value.FcnLambdaValue.<init>(FcnLambdaValue.java:41) at tlc2.tool.Tool.evalAppl(Tool.java:1585) at tlc2.tool.Tool.eval(Tool.java:1212) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1018) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1021) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:715) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:975) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1029) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1063) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:816) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:700) at tlc2.tool.distributed.TLCApp.getNextStates(TLCApp.java:132) at tlc2.tool.distributed.TLCWorker.getNextStates(TLCWorker.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) The behavior up to this point is: @!@!@STARTMSG 2121:1 @!@!@ The behavior up to this point is: @!@!@ENDMSG 2121 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 1: <Initial predicate> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 2: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 3: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = <<[op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0]>> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 4: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 5: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 6: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 7: <Action line 422, col 5 to line 483, col 84 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "commit", txnid |-> T2] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 8: <Action line 416, col 5 to line 418, col 96 of module serializableSnapshotIsolation> /\ holdingXLocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ outConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) /\ history = << [op |-> "begin", txnid |-> T0], [op |-> "commit", txnid |-> T0], [op |-> "begin", txnid |-> T1], [op |-> "commit", txnid |-> T1], [op |-> "begin", txnid |-> T2], [op |-> "commit", txnid |-> T2], [op |-> "begin", txnid |-> T3] >> /\ holdingSIREADlocks = (T0 :> {} @@ T1 :> {} @@ T2 :> {} @@ T3 :> {} @@ T4 :> {}) /\ waitingForXLock = (T0 :> NoLock @@ T1 :> NoLock @@ T2 :> NoLock @@ T3 :> NoLock @@ T4 :> NoLock) /\ inConflict = (T0 :> FALSE @@ T1 :> FALSE @@ T2 :> FALSE @@ T3 :> FALSE @@ T4 :> FALSE) @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 7003:0 @!@!@ Worker: rmi://ip-10-167-25-202.us-west-1.compute.internal:40387 Sent: 19646 Rcvd: 25338 (2011-10-07 15:29:02) @!@!@ENDMSG 7003 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(8) at 2011-10-07 15:29:02: 25375 states generated, 19646 distinct states found, 16644 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2199:0 @!@!@ 25375 states generated, 19646 distinct states found, 16644 states left on queue. @!@!@ENDMSG 2199 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2011-10-07 15:29:02) @!@!@ENDMSG 2186 @!@!@ And the console output of the single worker: ubuntu@ip-10-167-25-202:/mnt$ java -cp tla2tools.jar tlc2.tool.distributed.TLCWorker ec2-50-18-128-101.us-west-1.compute.amazonaws.com & [1] 6990 ubuntu@ip-10-167-25-202:/mnt$ TLC Worker Version 2.03 of 20 July 2011 Parsing file /tmp/1318001328641/MC.tla Parsing file /tmp/1318001328641/serializableSnapshotIsolation.tla Parsing file /tmp/TLC.tla Parsing file /tmp/Integers.tla Parsing file /tmp/Sequences.tla Parsing file /tmp/FiniteSets.tla Parsing file /tmp/Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module FiniteSets Semantic processing of module TLC Semantic processing of module serializableSnapshotIsolation Semantic processing of module MC Starting... (2011-10-07 15:28:49) TLC worker ready at: Fri Oct 07 15:28:49 UTC 2011 ip-10-167-25-202.us-west-1.compute.internal, work completed at: Fri Oct 07 15:29:08 UTC 2011 Computed: 25374 Thank you! I'm able to reproduce this locally even with cmdline TLC. Causing the NPE is related to "coverage" checking. Removing the coverage parameter on the cmdline, makes the NPE disappear. Coverage has been remove from the parameters that are passed to TLCServer until the root cause for the NPE is found. The next CI build will include this change. Created attachment 117 [details]
mylyn/context/zip
|
Summary: | DiskFPSet memory lookup fails to look up 0 (zero) or Long.MIN_VALUE | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
A bucket used by DiskFPSet to store fingerprints in memory marks unused positions with zeros. Thus DiskFPSet#memLookup(long) cannot lookup a fingerprint which happens to be either 0 or Long.MIN_VALUE (zeroing Long.MIN_VALUE msb turns it into 0). FWIW: No code appears to exist that guards TLC from using 0/zero as a valid fingerprint Fromn the moment when the in-memory storage is flushed to disk, zero is correctly handled by DiskFPSet#diskLookup(long). This means that the behavior for 0 and Long.Min_Value depends on DiskFPSets internal state. |
Summary: | Performance bottleneck in checkpointing and .fp file roll-over | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Creating a checkpoint and/or rolling over the fingerprint (.fp) disk backing store essentially stalls TLC for "larger" models. A larger model is one with millions of states and multi GB disk files. Checkpointing or rolling over causes the complete file to be copied taking most In distributed mode, this has the extra problem of disconnecting TLCWorkers because TLCServer stops responding for too long. Obviously we could make TLCWorkers more robust WRT timeouts, but it doesn't solve the underlying problem. This bottleneck might be the cause for tlc2.tool.fp.DiskFPSet.beginChkpt() not doing any checkpointing |
Summary: | Make -fpbits parameter available in HowToRun section of model editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Add UI for the newly added fpbits parameter (see bug #210). Fix released to HEAD Created attachment 118 [details]
mylyn/context/zip
|
Summary: | "-1 workers registered" in TLC distributed mode | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Chris Newcombe: Is the count of remote workers supposed to be accurate? I have 6 worker hosts, with 8 workers (cores) each. I started all workers (after restoring from a checkpoint), and it only reached 40 workers, not 48. I don’t know why. So I killed all workers, intending to restart them. I noticed that after I killed them, the master says there are -1 workers (see partial screenshot, below/attached) I then tried restarting workers, but won’t go higher than 4. I suspect the server has stopped, although the workers don’t complain on their side. The tail end of the TLC log on the master says the following. java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) Tail of long master log: … @!@!@STARTMSG 1000:1 @!@!@ %1% @!@!@ENDMSG 1000 @!@!@ java.lang.NullPointerException at tlc2.tool.distributed.TLCServer.getNewStates(TLCServer.java:485) at tlc2.tool.distributed.TLCServer.modelCheck(TLCServer.java:422) at tlc2.tool.distributed.TLCServer.main(TLCServer.java:554) @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:60641 completed (2011-10-10 05:23:43) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:56161 completed (2011-10-10 05:23:44) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:49840 completed (2011-10-10 05:23:46) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:56686 completed (2011-10-10 05:23:48) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:51983 completed (2011-10-10 05:23:49) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.contains(DiskFPSet.java:287) at tlc2.tool.fp.FPSet.containsBlock(FPSet.java:110) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Fix released to HEAD Created attachment 137 [details]
mylyn/context/zip
|
Summary: | Deactivate "Model Overview" worker count if distributed is on | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Worker count has no effect in distributed TLC, thus it should be deactivated if distributed mode is turned on. |
Summary: | NPE in TLCWorker KeepAlive Timer task | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Exception in thread "TLCWorker KeepAlive Timer" java.lang.NullPointerException at tlc2.tool.queue.StateQueue.sEnqueue(StateQueue.java:66) at tlc2.tool.distributed.TLCServerThread.handleRemoteWorkerLost(TLCServerThread.java:210) at tlc2.tool.distributed.TLCServerThread.access$3(TLCServerThread.java:208) at tlc2.tool.distributed.TLCServerThread$TLCTimerTask.run(TLCServerThread.java:278) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462) Fix released to HEAD Created attachment 119 [details]
mylyn/context/zip
|
Summary: | NPE in TLCServer when TLCWorker disconnect unexpectedly | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
java.lang.NullPointerException at tlc2.tool.distributed.TLCServer.getNewStates(TLCServer.java:485) at tlc2.tool.distributed.TLCServer.modelCheck(TLCServer.java:422) at tlc2.tool.distributed.TLCServer.main(TLCServer.java:554) Fix released to HEAD Created attachment 120 [details]
mylyn/context/zip
|
Summary: | Toolbox not reporting TLC error. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- | ||
Bug Depends on: | 145 | ||
Bug Blocks: | |||
Attachments: |
The .toolbox directory
The relevant part of the Eclipse console. the Toolbox's TLC Console |
I ran TLC and the Console showed an error while the Toolbox showed just a starting time, no ending time, and the status "not running". The Eclipse console output shows six instances of an assertion failure at TLCModelLaunchDataProvider.java:249. If Bugzilla lets me, I will attach the relevant files and output below. Created attachment 121 [details]
The .toolbox directory
Created attachment 122 [details]
The relevant part of the Eclipse console.
I was running the Toolbox under Eclipse
Created attachment 123 [details]
the Toolbox's TLC Console
This has happened before but wasn't reproducible. It now seems to be reproducible. I'm attaching the TLA+ input below just in case the version saved in the .toolbox directory is corrupted. -------------------------------- MODULE Test -------------------------------- EXTENDS Integers, TLAPS R==42 \*a \leq b == IF a = b THEN TRUE ELSE a < b THEOREM 4+5=9 BY SMT THEOREM ASSUME \A a, b \in R : (a \leq b) = (IF a = b THEN TRUE ELSE a < b) PROVE \A a, b \in R : a < b => {r \in R : a \leq r /\ r \leq b} = {r \in R : a < r /\ r < b} \union {a, b} OBVIOUS VARIABLE x, y Init == x = 0 /\ y = 0 Next == x'=(x+1) /\ y' = y ============================================================================= Sorry, not completely reproducible. Closing the Toolbox and restarting it fixes things. So the Toolbox's data structures had somehow gotten into a bad state, and I failed to save them. Anyway, I hope that the location of the failed assertion will allow some kind of patch that will allow the Toolbox to do something reasonable despite the assertion not holding. |
Summary: | TLC trace and exception output gets mixed in distributed mode causing parsing problems in the Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 229 | ||
Bug Blocks: | |||
Attachments: |
Toolbox Screenshot
mylyn/context/zip |
CN: "The state in the pane below
…
/\ logStreamB = << [seq |-> 1, type |-> "EpochChange", lock |-> 1, pel |-> 0, epoch |-> 1],
[seq |-> 2, java.rmi.ConnectException: Connection refused to host: 10.167.25.202; nested exception is:
java.net.ConnectException: Connection refused
type |-> "Data", lock |-> 1, epoch |-> 1],
[seq |-> 3, type |-> "Data", lock |-> 1, epoch |-> 1] >
>…
The ascii value of that variable from the previous state in the trace
<< [seq |-> 1, type |-> "EpochChange", lock |-> 1, pel |-> 0, epoch |-> 1],
[seq |-> 2, type |-> "Data", lock |-> 1, epoch |-> 1],
[seq |-> 3, type |-> "Data", lock |-> 1, epoch |-> 1] >>
"
Created attachment 124 [details]
Toolbox Screenshot
LL: "I don’t know how the Java runtime is supposed to handle concurrent print statements. If it allows the output to be mixed, then calls to the print method should be synchronized. It’s unlikely that all of them are—especially ones reporting an exception. If the runtime is supposed to interleave calls to the print method, then it’s a Java problem." I wonder if the ConnectionException should even be printed to the console (System.out|System.err). What about logging non-functional errors/warnings to a dedicated logging facility? That would make it easier for users to distinguish real model checking errors. Concurrent writes to ToolIO.out and ToolIO.err are not synchronized and will be interleaved randomly. Released a change to HEAD that makes all console writes go to ToolIO.out. This prevents interleaved output. Created attachment 130 [details]
mylyn/context/zip
Fix released to HEAD |
Summary: | java.io.IOException: Bad file descriptor in distributed mode | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- |
@!@!@STARTMSG 7002:0 @!@!@ TLC worker rmi://ip-10-166-191-183.us-west-1.compute.internal:42289 disconnected (2011-10-12 22:58:55) @!@!@ENDMSG 7002 @!@!@ @!@!@STARTMSG 2196:0 @!@!@ Checkpointing completed at (2011-10-12 22:58:55) @!@!@ENDMSG 2196 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ %1% @!@!@ENDMSG 1000 @!@!@ java.lang.NullPointerException at tlc2.tool.distributed.TLCServer.getNewStates(TLCServer.java:485) at tlc2.tool.distributed.TLCServer.modelCheck(TLCServer.java:422) at tlc2.tool.distributed.TLCServer.main(TLCServer.java:554) @!@!@STARTMSG 1000:1 @!@!@ Bad file descriptor @!@!@ENDMSG 1000 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.flushBuffer(BufferedRandomAccessFile.java:173) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:203) at tlc2.util.BufferedRandomAccessFile.write(BufferedRandomAccessFile.java:308) at java.io.RandomAccessFile.writeLong(RandomAccessFile.java:1001) at tlc2.tool.TLCTrace.writeState(TLCTrace.java:69) at tlc2.tool.TLCTrace.writeState(TLCTrace.java:56) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:171) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:232) at tlc2.tool.fp.FPSet.putBlock(FPSet.java:96) at tlc2.tool.distributed.FPSetManager.putBlock(FPSetManager.java:150) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:160) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.contains(DiskFPSet.java:287) at tlc2.tool.fp.FPSet.containsBlock(FPSet.java:110) at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.contains(DiskFPSet.java:287) at tlc2.tool.fp.FPSet.containsBlock(FPSet.java:110) at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:232) at tlc2.tool.fp.FPSet.putBlock(FPSet.java:96) at tlc2.tool.distributed.FPSetManager.putBlock(FPSetManager.java:150) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:160) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:232) at tlc2.tool.fp.FPSet.putBlock(FPSet.java:96) at tlc2.tool.distributed.FPSetManager.putBlock(FPSetManager.java:150) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:160) @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.contains(DiskFPSet.java:287) at tlc2.tool.fp.FPSet.containsBlock(FPSet.java:110) at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Master and workers are: Ubuntu 11.04 Natty Narwhal Sun Java SE 1.6.0_26.b03 Java HotSpot 20.1-b02 mixed-mode Stack copied over from bug #216 (deals with counter turning negative): I then tried restarting workers, but won’t go higher than 4. I suspect the server has stopped, although the workers don’t complain on their side. The tail end of the TLC log on the master says the following. java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) Tail of long master log: … @!@!@STARTMSG 1000:1 @!@!@ %1% @!@!@ENDMSG 1000 @!@!@ java.lang.NullPointerException at tlc2.tool.distributed.TLCServer.getNewStates(TLCServer.java:485) at tlc2.tool.distributed.TLCServer.modelCheck(TLCServer.java:422) at tlc2.tool.distributed.TLCServer.main(TLCServer.java:554) @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:60641 completed (2011-10-10 05:23:43) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:56161 completed (2011-10-10 05:23:44) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:49840 completed (2011-10-10 05:23:46) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:56686 completed (2011-10-10 05:23:48) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 7001:0 @!@!@ Registration for worker at rmi://ip-10-166-53-61.us-west-1.compute.internal:51983 completed (2011-10-10 05:23:49) @!@!@ENDMSG 7001 @!@!@ @!@!@STARTMSG 2129:1 @!@!@ DiskGraph.toString() @!@!@ENDMSG 2129 @!@!@ java.io.IOException: Bad file descriptor at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.fp.DiskFPSet.diskLookup(DiskFPSet.java:458) at tlc2.tool.fp.DiskFPSet.contains(DiskFPSet.java:287) at tlc2.tool.fp.FPSet.containsBlock(FPSet.java:110) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) |
Summary: | Garbage in the error message shown in Toolbox console | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
spec
Screenshot |
Created attachment 125 [details]
spec
In the screen shot below, note the garbage in the error message. Further below
is the Toolbox console output. The problem repeats when I close the spec and
stop and restart the Toolbox. My guess is that the code is getting confused
because the location of the error is in the MC file, and this should be easy to
fix. The Eclipse console shows no error.
@!@!@STARTMSG 2262:0 @!@!@
TLC2 Version 2.03 of 20 July 2011
@!@!@ENDMSG 2262 @!@!@
@!@!@STARTMSG 2187:0 @!@!@
Running in Model-Checking mode.
@!@!@ENDMSG 2187 @!@!@
@!@!@STARTMSG 2220:0 @!@!@
Starting SANY...
@!@!@ENDMSG 2220 @!@!@
Parsing file MC.tla
Parsing file Test.tla
Parsing file
C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\TLC.tla
Parsing file
C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Integers.tla
Parsing file TLAPS.tla
Parsing file
C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\FiniteSets.tla
Parsing file
C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Naturals.tla
Parsing file
C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Sequences.tla
Semantic processing of module Naturals
Semantic processing of module Integers
Semantic processing of module TLAPS
Semantic processing of module Sequences
Semantic processing of module FiniteSets
Semantic processing of module Test
Semantic processing of module TLC
Semantic processing of module MC
@!@!@STARTMSG 2219:0 @!@!@
SANY finished.
@!@!@ENDMSG 2219 @!@!@
@!@!@STARTMSG 2185:0 @!@!@
Starting... (2011-10-18 04:37:59)
@!@!@ENDMSG 2185 @!@!@
@!@!@STARTMSG 2105:1 @!@!@
Evaluating assumption line 10, col 8 to line 10, col 65 of module MC failed.
Attempted to compare string "a" with non-string:
1
@!@!@ENDMSG 2105 @!@!@
@!@!@STARTMSG 2186:0 @!@!@
Finished. (2011-10-18 04:37:59)
@!@!@ENDMSG 2186 @!@!@
Created attachment 126 [details]
Screenshot
|
Summary: | Add reusable TLCWorker process (based on OSGi) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Missing support for re-initialization makes the TLCWorker process unusable for multiple invocations with different models. However, from a users perspective, reusing a TLCWorker process for multiple different model checker runs is desirable. |
Summary: | Minor problem in Toolbox reporting of "Current status" | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- |
I started a TLC run a couple of hours ago. The Toolbox reports the correct start time, but reports the current status as "not running". This is an unusual spec because it causes TLC to run forever computing the values of constants, before doing any actual checking. Here's the relevant part of the console output. TLC2 Version 2.03 of 20 July 2011 @!@!@ENDMSG 2262 @!@!@ @!@!@STARTMSG 2187:0 @!@!@ Running in Model-Checking mode. @!@!@ENDMSG 2187 @!@!@ @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file MC.tla Parsing file CarTalkPuzzle.tla ... Semantic processing of module Naturals ... @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2011-10-28 22:57:47) @!@!@ENDMSG 2185 @!@!@ |
Summary: | Proof obligation line height calculation broken on Mac OSx Lion 10.7 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | Other | ||
OS: | Mac OS | ||
Target Version: | --- | ||
Bug Depends on: | 235 | ||
Bug Blocks: | |||
Attachments: |
Screenshot
mylyn/context/zip |
On Mac OSx Lion the proof obligation view is small hiding the lower part of the proof making it unreadable. The attached image shows the problem. https://bugs.eclipse.org/353503 tracks the underlying issue upstream. Unfortunately, it has only been fixed in Eclipse 3.7. Created attachment 127 [details]
Screenshot
Fix released to HEAD Created attachment 140 [details]
mylyn/context/zip
|
Summary: | Canceling change to assignment of value to CONSTANT does not cancel | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Create a spec with a CONSTANT parameter A. Let A have the value 22. Then edit the assignment to A, change the 22 to 33, but click Cancel instead of Finish. The value 22 is displayed. Then run TLC on the model. The spec will be run with, and the model editor will then show, the assignment of 33 to A. This sure looks like an Eclipse bug. It is a Toolbox bug. The problem is that org.lamport.tla.toolbox.tool.tlc.ui.wizard.AssignmentWizardPage.dispose() is setting the Assignment object to the typed value regardless of whether Finish or Cancel was typed. This same problem probably occurs with the various other fields that use this dispose() method. Fix released to HEAD Check canceled flag in org.lamport.tla.toolbox.tool.tlc.ui.wizard.AssignmentWizardPage.dispose() Created attachment 128 [details]
mylyn/context/zip
|
Summary: | Adding variables and a behavioral spec to a constant spec causes existing models to produce a spurious error. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Step 1. Create a new spec with nothing in it. Create a new model. Put 22 in the "Evaluate Constant Expression" field (probably unnecessary) and run TLC on the model. Step 2. Add the following to the spec: EXTENDS Integers VARIABLE y Init == y = 0 Next == y' = (y+1)%5 and edit the model to use Init and Next as the initial predicate and next-state action. Run TLC on the model. The Toolbox produces the following in the error window: 231594371 While working on the initial state: y = 0 The error occurred when TLC was evaluating the nested expressions at the following positions: The error call stack is empty. The MC.tla and MC.cfg files seem to be fine; TLC runs them correctly from outside the Toolbox. A new model may (or perhaps may not) run TLC fine. The old model always produces the same error. The changing of the spec was a red herring. This is a problem triggered by the introduction of the fpbits parameter that Markus will soon fix. Fix released to HEAD If fpBits equals 0, a DiskFPSet will be used. Else if fpBits > 0, a MultiFPSet. Created attachment 129 [details]
mylyn/context/zip
|
Summary: | Hide certain error codes from TLC errors view | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 221 | ||
Attachments: | mylyn/context/zip |
With bug #221, network errors are logged like regular TLC errors. To not confuse the user, these errors must not show up in either the TLC Errors nor user output. Released to HEAD Created attachment 131 [details]
mylyn/context/zip
|
Summary: | Toolbox not handling multiple errors reported by PlusCal in a single message. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | ASSIGNED --- | ||
Severity: | minor | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
The methods in the PlusCal class PcalSymTab accumulate multiple errors in the String errorReport and then report them as a single error. After I fixed these error messages, the Toolbox puts an error marker on, and sets the PCal Translation Error window to be a link to, the location reported for the first of those errors. The error marker is added by the call of TLAMarkerHelper.installProblemMarker in the Toolbox's TranslatorJob module's runInWorkspace method (currently at line 136). It should be easy to recode this to detect and add multiple markers, by putting that call inside a loop and modifying the module's detectLocation method to take an argument saying where to start looking for a location and returning a value indicating where to look in the message for the next location. I presume that the magic that removes those error markers when the translator is called will remove all of them, but I haven't tried it. It would be nice if the window could have links to each of the errors. However, I suspect that if we want that, the best approach is to create separate PCal Translator Error subwindows for each of the parser errors. It is impossible to figure out from the Toolbox code how to do that. The The subwindow is created by a call to the createPartControl method in ProblemView, which got there as the result of a call to UIHelper.openView, which was called by a runnable launched by Activator.resourceChanged, which was called from the bowels of Eclipse. But the code is so inscrutable it would take me weeks to figure out how it actually works and how one could make the PCal translator and the Toolbox work together to produce the separate error subwindows. |
Summary: | TLCWorker handles OutOfMemoryError like a model exception | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
If a TLCWorker dies due to an OutOfMemoryError, the error ripples through to the server like a WorkerException (e.g. invariant violation). This effectively terminates model checking right away. Thus, an OOM error should be wrapped in a RemoteException. This additionally allows the TLCServer to reduce the amount of new states send for the worker to calculate the next states. Fix released to HEAD Created attachment 139 [details]
mylyn/context/zip
|
Summary: | Unexport all remotly available UnicastRemoteObjs to gracefully shutdown TLCServer | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
With the change to use a MultiFPSet instead of a more simple DiskFPSet in TLCServer (bug #215), unexporting nested FPSets becomes necessary. The TLCServer process does not shutdown gracefully anymore otherwise. Created attachment 133 [details]
mylyn/context/zip
|
Summary: | Find Uses command throwing a null pointer exception | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- | ||
Attachments: |
The offending spec
Determine ExprNode array size depending on otherarm case mylyn/context/zip |
Trying to run the Find Uses command (F6) on any token in the spec to be attached does nothing because of a null pointer exception at at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1526) Created attachment 134 [details]
The offending spec
Here's the full ST. java.lang.NullPointerException at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1526) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(ResourceHelper.java:1528) at org.lamport.tla.toolbox.util.ResourceHelper.getUsesOfSymbol(ResourceHelper.java:1366) at org.lamport.tla.toolbox.editor.basic.handlers.ShowUsesHandler.execute(ShowUsesHandler.java:406) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100) at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1809) at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4892) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4560) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4985) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2531) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386) Here's a simpler example that produces the bug: ------ MODULE Test ---- Foo == CASE TRUE -> TRUE [] OTHER -> FALSE ============================ Just try the Find Uses command on Foo. The bug seems to be in handling the OTHER clause in the CASE Created attachment 135 [details]
Determine ExprNode array size depending on otherarm case
Created attachment 136 [details]
mylyn/context/zip
Here's how org.lamport.tla.toolbox.util.ResourceHelper.innerGetUsesOfSymbol(SymbolNode, SemanticNode, Vector<SemanticNode>) line 1524 to 1530 adds an extra null check to avoid the NPE. for (int i = 0; i < children.length; i++) { final SemanticNode sn = children[i]; if (sn != null && node.getLocation().source().equals(sn.getLocation().source())) { innerGetUsesOfSymbol(symbol, sn, found); } } return; Fixed, essentially as indicated by Markus's preceding comment. See the comments in the code for an explanation of the bug. |
Summary: | Potential race condition in StateQueue synchronization | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
In valid cases tlc2.tool.distributed.TLCServerThread.handleRemoteWorkerLost(StateQueue) is executed multiple times for a single worker. Thus, all methods executed by this method have to be idempotent to not cause havoc. Calling tlc2.TLCGlobals.incNumWorkers(int) is such a method and thus needs proper guarding against multiple invocations. Fix released to HEAD Created attachment 138 [details]
mylyn/context/zip
|
Summary: | [releng] Define 3rd party (OSGi) dependencies in .target definition file only | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 226 | ||
Attachments: | mylyn/context/zip |
So far we've been using two separate definitions of 3rd party dependencies (.target def file and <repository> def in parent pom). The .target def file should become the only definition used by both the Maven Tycho build as well as the Eclipse IDE. Fix released to HEAD Created attachment 141 [details]
mylyn/context/zip
|
Summary: | Overflow in tlc2.tool.ModelChecker.reportSuccess() causing negative "calculated" probability | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
With big models, the amount of states causes an overflow in lc2.tool.ModelChecker.reportSuccess(FPSet, long) resulting in a negative probability for a hash collision reported. Released to master Created attachment 142 [details]
mylyn/context/zip
|
Summary: | Expose TLC's "-fp" parameter in Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
TLC's "-fp" parameter is currently not supported by the Toolbox. Hence, it should be exposed on the advanced tab of the Toolbox's model editor page. Released (preliminary) version to HEAD Created attachment 143 [details]
mylyn/context/zip
Reworked with spinner instead of input box, marking as fixed Created attachment 144 [details]
mylyn/context/zip
|
Summary: | Add missing TLC parameters to Toolbox UI (dump, gzip, nowarning, terse) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The Toolbox does not provide support for the following TLC command line parameters: -dump file dump all the states into file -gzip control if gzip is applied to value input/output stream. Defaults to use gzip -terse do not expand values in Print statement. Defaults to expand value if not specified -nowarning disable all the warnings. Defaults to report warnings if not specified |
Summary: | Add back and forward navigation to Toolbox | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
Released change for TLAEditor Created attachment 145 [details]
mylyn/context/zip
Released support for FormPages to HEAD Created attachment 146 [details]
mylyn/context/zip
|
Summary: | Add scale to ModelEditor to adjust physical system memory used by nested TLC process | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
The Toolbox's tuning options for the TLC model checker are limited. The "How to run" section of the "Model Overview" page only comes with with text input for the JVM heap size. To better aid the user with tuning the TLC model checker, a slider should allow users to select the amount of memory allocated to the nested JVM from the available physical system memory. Storing this as a ratio rather than absolute values prevents the model from becoming machine dependent. s/slider/scale Enhancement released to HEAD (a while ago) Created attachment 158 [details]
mylyn/context/zip
|
Summary: | Please add keyboard command "Go to matching bracket" | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
I've started writing PlusCal in the toolbox. I immediately *really* miss the "Go to matching bracket" key in Eclipse. This is normally bound to 'Ctrl Shift P'. I tried adding it via File ... Preferences ... General ... Keys, but the function isn't even listed, so I can't bind it to a key. Other modern Eclipse features are already supported by the toolbox editor (e.g. 'Alt Shift A' toggles between selecting a range of lines and selecting a block of columns, allowing easy bulk indent/outdent of multiple lines). Please could we have the 'Go to matching bracket function too'? many thanks, Chris Fixed by LL |
Summary: | int overflow with tlc2.tool.fp.DiskFPSet.maxTblCnt when maxMem for DiskFPSet reaches 2^31 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
This overflow causes the in-memory DiskFPSet storage to be flushed to disk on every put call and heavily degrades performance. Fix released to HEAD Created attachment 147 [details]
mylyn/context/zip
|
Summary: | Add -fpMemRatio parameter to set percentage of RAM dedicated to fingerprint sets | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 79 | ||
Attachments: | mylyn/context/zip |
-fpmem takes an absolute value for how much RAM is allocated to FPs which makes this parameter machine dependent. Additionally, it also depends on how much memory has been dedicated to the JVM via -Vmx in the first place. A user might miss that though. And -fpmem handling doesn't take into account that what the users passes with -Vmx isn't what Runtime.maxMemory() returns (not all heap mem is available). This means that the user allocates 75% heap mem to FPs even if one doesn't want to. The existing -fpMem option is going to stay. It will be removed from the documentation. If a user sets both parameters simultaneously an error with be returned. Enhancement released to HEAD (No documentation referring to old fpmem found) Created attachment 149 [details]
mylyn/context/zip
|
Summary: | Expose TLC statistics via Java management extensions (MXBeans) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip mylyn/context/zip |
In order to understand (and enhance) the runtime behavior of TLC with large models (billion of states) and/or in distributed mode, detailed statistics about TLC's internals become important. Java management extension [0][1] provides a framework for Java applications to expose such kind of statistics will little code changes. Building on JMX also has the advantage, that existing Java monitoring tools (e.g. jconsole) will support TLC statistics automatically. [0] http://docs.oracle.com/javase/tutorial/jmx/mbeans/mxbeans.html [1] https://en.wikipedia.org/wiki/Java_Management_Extensions Started with stats for DiskFPSet Created attachment 148 [details]
mylyn/context/zip
Added ModelChecker metrics showing: tlc2.tool:type=ModelChecker with - distinct states generated - distinct states generated per min - states generated - states generated per min - progress Created attachment 150 [details]
mylyn/context/zip
Changed collecting stats to accept dirty reads on distinct generated states counter if FPSet backing store is DiskFPSet implementation to reduce lock contention. Created attachment 151 [details]
mylyn/context/zip
Add worker count tlc2.tool.ModelCheccker#workerCount Figured need lock (contention) statistics for: - StateQueue - DiskFPSet or tlc2.util.ReadersWriterLock in general |
Summary: | Add -fpmem parameter to TLCServer | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
tlc2.tool.distributed.TLCServer is missing support for the -fpmem parameter. This is how it can be used (also with non-distributed tlc2.TLC): // -fpmem can be used in two ways: // a) to set the relative memory to be used for fingerprints (being machine independent) // b) to set the absolute memory to be used for fingerprints // // In order to set memory relatively, a value in the domain [0.0, 1.0] is interpreted as a fraction. // A value in the [2, Double.MaxValue] domain allocates memory absolutely. // // Independently of relative or absolute mem allocation, // a user cannot allocate more than JVM heap space // available. Conversely there is the lower hard limit TLC#MinFpMemSize. Fix released to HEAD Created attachment 152 [details]
mylyn/context/zip
|
Summary: | Error: Requested array size exceeds VM limit in DiskFPSet | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Error: Requested array size exceeds VM limit java.lang.OutOfMemoryError: Requested array size exceeds VM limit at tlc2.tool.fp.DiskFPSet.flushTable(DiskFPSet.java:606) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:326) at tlc2.tool.fp.FPSet.putBlock(FPSet.java:130) at tlc2.tool.distributed.FPSetManager.putBlock(FPSetManager.java:150) at tlc2.tool.distributed.TLCServerThread.run(TLCServerThread.java:181) This happened exactly when DiskFPSet flushed the in-memory cache to disk the first time. MC.fp has never been written successfully: kuppe@domU-12-31-39-18-15-75:~/git/tla/general/performance/states/12-01-07-01-04-57$ ls -la MC* -rw-rw-r-- 1 kuppe kuppe 0 2012-01-07 01:04 MC.fp -rw-rw-r-- 1 kuppe kuppe 32722883156 2012-01-07 12:15 MC.st -rw-rw-r-- 1 kuppe kuppe 16 2012-01-07 12:08 MC.st.chkpt Corresponding runtime statistics can be found at https://tla.msr-inria.inria.fr/rrdtool/domU-12-31-39-18-15-75/www/ Exact same exception at same moment got thrown by https://tla.msr-inria.inria.fr/rrdtool/ip-10-218-65-156 A similar looking behavior could be observed by a non-distributed TLC last week. The root cause for the previously observed behavior comes from a refactoring in tlc2.tool.ModelChecker.ModelChecker(String, String, String, boolean, String, FilenameToStream, SpecObj, long, int). The code used to divide the long parameter (which represents memInBytes) by 20. This was done due to DiskFPSet's runtime memory requirements. It allocates auxiliary storage (temporary buffer used in tlc2.tool.fp.DiskFPSet.flushTable() + tlc2.tool.fp.DiskFPSet.index) which exceeds 50% of its dedicated memory. Reintroducing the auxiliary storage reserve makes the OOM exception disappear. Fixed in HEAD Created attachment 155 [details]
mylyn/context/zip
|
Summary: | Push TLCRuntime down into tlatools/src/util package | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
TLCRuntime should be pushed down from the Toolbox code into tlatools/src/util.TLCRuntime. Fix released to HEAD Created attachment 153 [details]
mylyn/context/zip
|
Summary: | Make TLC print stacktraces when programming error | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
TLC tends to swallow stacktraces even with -debug enabled. This makes it impossible to diagnose error cases when TLC isn't run in a debugger. Thus, with -debug present, stacktraces should always be logged. As part of this ticket, -debug is going to be added to TLCServer#main(String[]). It turns out that -debug activates functionality that is more commonly referred to as tracing. Thus, for the moment, only those catch stmts will additionally log the stack that indicate a bug in TLC (and not in the user model) to regular MP.printError(...). Created attachment 154 [details]
mylyn/context/zip
|
Summary: | Link PlusCal code (via TLA+ to PlusCal mapper) in Toolbox UI | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
LL: "Anyplace where clicking now takes us to a region of the spec, we want Alt-Click (actually, I think Shift-Click would be better unless you have a reason for preferring Alt-Click) to take us to the region obtained by calling TLAtoPCalMapping.ApplyMapping with that region and the most recent TLAtoPCalMapping produced by the translator as arguments. (If the call returns null, then it takes us to the same region as an ordinary click.) The places I can think of where that applies are: - A TLA+ Parsing Error in the Parsing Error window. (As I said earlier, it doesn't matter if that's also done on a PCal translation error, since ApplyMapping will return null in that case.) - The TLC Error window. - An action line in the TLC error trace window. (Since in this case double-clicking takes you to the spec, it should be Alt or Shift double-click.) - A location entry in the coverage information." First step is to persistently store the pcal mapping as part of the spec The persistent mapping will not survive spec filename (corresponding .tla) renames. Persistent mapping storage considered done Created attachment 159 [details]
mylyn/context/zip
I ran a translation, closed the spec, reopened it, and the mapping still worked. I then closed the spec, closed the Toolbox, then restarted the Toolbox. The console log, appended below, reported a relevant exception. When I opened the spec, the mapping no longer worked. osgi> TLA+ Toolbox started without arguments. !SESSION 2012-01-18 16:07:14.627 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_29 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data C:\lamport\tla\newtools\tla2-inria-workspace/../runtime-org.lamport.tla.toolbox.product.product.product -dev file:C:/lamport/tla/newtools/tla2-inria-workspace/.metadata/.plugins/org.eclipse.pde.core/org.lamport.tla.toolbox.product.product.product/dev.properties -os win32 -ws win32 -arch x86 -console -consolelog !ENTRY org.eclipse.core.resources 2 10035 2012-01-18 16:07:15.759 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. footFileName = C:\lamport\tla\newtools\tlapm\examples\bySMT\Allocator.tla footFileName = C:\lamport\papers\paxos\simple\byztla\BPConProof.tla footFileName = C:\lamport\books\hyper-tla\specs\Channel\BoundedBuffer.tla footFileName = C:\lamport\books\hyper-tla\specs\Channel\BoundedBuffer2.tla footFileName = C:\lamport\books\hyper-tla\specs\Channel\BoundedChannel.tla footFileName = C:\lamport\papers\proof\Calculus.tla footFileName = C:\lamport\reviews\vonneumann\CandidateRanking.tla footFileName = C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\examples\CarTalkPuzzle\CarTalkPuzzle.tla footFileName = C:\lamport\books\hyper-tla\specs\cookbook\CookBook.tla footFileName = C:\lamport\talks\pluscal\FastMutex.tla footFileName = C:\lamport\talks\lada12\LevelSpec.tla footFileName = C:\lamport\tla\newtools\tlapm\examples\NaturalsInduction.tla footFileName = C:\lamport\talks\lada12\specs\P2TCommit.tla footFileName = C:\lamport\talks\lada12\specs\P2TwoPhase.tla footFileName = C:\lamport\books\hyper-tla\specs\Channel\PCalBoundedBuffer.tla footFileName = C:\lamport\talks\lada12\specs\PTCommit.tla footFileName = C:\lamport\talks\lada12\specs\PTwoPhase.tla footFileName = C:\lamport\tla\newtools\tlapm\doc\vstte12\Peterson.tla footFileName = C:\lamport\mytemp\SumAndMax.tla footFileName = C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\general\docs\TLAToPCal.tla footFileName = C:\lamport\mytemp\Test.tla footFileName = C:\lamport\mytemp\Test2.tla footFileName = C:\lamport\mytemp\Test_Bug.tla footFileName = C:\lamport\mytemp\Test_PM.tla footFileName = C:\lamport\tla\newtools\tlapm\examples\WellFoundedInduction.tla footFileName = C:\lamport\tla\newtools\tlapm\examples\WellFoundedOpInduction.tla footFileName = C:\lamport\tla\pluscal\bugs\bug_11_09_13.tla java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: pcal.TLAtoPCalMapping at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.lamport.tla.toolbox.util.ResourceHelper.readTLAtoPCalMapping(ResourceHelper.java:1648) at org.lamport.tla.toolbox.spec.Spec.getTpMapping(Spec.java:452) at org.lamport.tla.toolbox.spec.Spec.initProjectProperties(Spec.java:198) at org.lamport.tla.toolbox.spec.Spec.<init>(Spec.java:123) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.<init>(WorkspaceSpecManager.java:77) at org.lamport.tla.toolbox.Activator.getSpecManager(Activator.java:303) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:52) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: java.io.NotSerializableException: pcal.TLAtoPCalMapping at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at org.lamport.tla.toolbox.util.ResourceHelper.writeTLAtoPCalMapping(ResourceHelper.java:1676) at org.lamport.tla.toolbox.spec.Spec.setTpMapping(Spec.java:500) at org.lamport.tla.toolbox.job.TranslatorJob.runInWorkspace(TranslatorJob.java:130) at org.lamport.tla.toolbox.job.TranslatorJob$1.run(TranslatorJob.java:169) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) !ENTRY org.eclipse.equinox.p2.ui.sdk.scheduler 4 0 2012-01-18 16:07:18.024 !MESSAGE The update checker service is not initialized !ENTRY org.eclipse.equinox.p2.ui.sdk.scheduler 4 0 2012-01-18 16:07:18.024 !MESSAGE The update checker service is not initialized ERROR: Duplicate alias. Failed to register resource for [alias="/", contributor="org.eclipse.help.webapp[83]"] Spec build invoked on Test ... Resulting status is: parsed ... build invocation finished. Added a parse result listener. There are now 1 listeners. I cannot reproduce this in my local workspace with the step you mentioned, can you? If yes, please send me your spec. Fix a while ago |
Summary: | StackOverflow in org.eclipse.core.internal.dtree.DeltaDataTree.reroot(DeltaDataTree) during Toolbox startup | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
The Eclipse .log file. The stackoverflow is at the end of the file.
The output of ls -la for the Toolbox metadata directory |
A dialog pops up at startup showing: JVM terminated. Exit code=1 /usr/bin/java -Xmx1000m -Dorg.eclipse.equinox.http.jetty.http.port=10996 -jar /tlc_master/toolbox/plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /tlc_master/toolbox/toolbox -name Toolbox --launcher.library /tlc_master/toolbox/plugins/rg.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.2.R36x_v20101019_1345/eclipse_1310.so -startup /tlc_master/toolbox/plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar -exitdata 8000e -vm /usr/bin/java -vmargs -Xmx1000m -Dorg.eclipse.equinox.http.jetty.http.port=10996 -jar /tlc_master/toolbox/plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar Created attachment 156 [details]
The Eclipse .log file. The stackoverflow is at the end of the file.
The BadLocation exception and assertion errors at the beginning of the
log appear to be a red herring in the context of the stackoverflow. They
have to be analyzed separatetly.
Created attachment 157 [details]
The output of ls -la for the Toolbox metadata directory
|
Summary: | The default FPSet tlc2.tool.fp.DiskFPSet.DiskFPSet never creates a checkpoint unless used through tlc2.tool.distributed.FPSetManager | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | critical | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLC's default FPSet implementation tlc2.tool.fp.DiskFPSet.DiskFPSet turns tlc2.tool.fp.FPSet.beginChkpt() and tlc2.tool.fp.FPSet.commitChkpt() into a no-op. This results in no checkpoints ever written for non-distributed and distributed TLC (unless the distributed FPSetManager facade is used). There is no indication or explanation given as to why both methods are no-ops. One possible reason might be performance degradation (see bug #214) if DiskFPSet flushes to disk to excessively. All mem-based FPSet implementation delegate from no-arg beginChkpt/commitChkpt to their String-arg method implementation. |
Summary: | The default FPSet tlc2.tool.fp.DiskFPSet.DiskFPSet never creates a checkpoint unless used through tlc2.tool.distributed.FPSetManager | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | critical | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLC's default FPSet implementation tlc2.tool.fp.DiskFPSet.DiskFPSet turns tlc2.tool.fp.FPSet.beginChkpt() and tlc2.tool.fp.FPSet.commitChkpt() into a no-op. This results in no checkpoints ever written for non-distributed and distributed TLC (unless the distributed FPSetManager facade is used). There is no indication or explanation given as to why both methods are no-ops. One possible reason might be performance degradation (see bug #214) if DiskFPSet flushes to disk too excessively. All mem-based FPSet implementation delegate from no-arg beginChkpt/commitChkpt to their String-arg method implementation. *** Bug 251 has been marked as a duplicate of this bug. *** In non-distributed TLC, tlc2.tool.fp.DiskFPSet.recover() does not recovery from its corresponding MC.fp. It recreates the DiskFPSet state from the TLCTrace file. |
Summary: | Default for memory slider should make a better initial suggestion than 50% | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | ||
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
LL: "When I create a new TLC model on my laptop and open the "How to run" section, I find that it has set the memory allocation to 50% (1 Gbyte), which is colored bright red. I don't know if 1G is really too big on a 4G machine, but the default should not be a value that the Toolbox tells the user is too big." New default is 25% which should not exceed what a 32bit VM can handle (otherwise it dies with a "Could now create java virtual machine"). Created attachment 181 [details]
mylyn/context/zip
|
Summary: | Enablement of handlers causes NPE if executed on unparsed spec/not fully initialized editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.ui 4 0 2012-01-18 17:19:59.512 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.ui.handler.PCalTranslateModuleHandler.execute(PCalTranslateModuleHandler.java:43) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) The root cause of this bug is how the Toolbox ignores the API contract of org.eclipse.ui.IWorkbenchPage.getActiveEditor(). Javadoc states that null is a valid return value if no editor is active. Fix released to HEAD by not enabling handlers if no active editor could be found. Created attachment 168 [details]
mylyn/context/zip
|
Summary: | Release Toolbox/TLC/PlusCal 1.4.1 release | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
- Increment Toolbox versions in: /general/docs/microsoft-release.txt /org.lamport.tla.toolbox/welcome/welcomeView.html /org.lamport.tla.toolbox.product.product/org.lamport.tla.toolbox.product.product.product /org.lamport.tla.toolbox.product.standalone/plugin.xml - TLC /tlatools/src/tlc2/ tlc2.TLCGlobals.versionOfTLC Created attachment 160 [details]
mylyn/context/zip
Done Created attachment 164 [details]
mylyn/context/zip
|
Summary: | Running PlusCal translation on a dirty editor throws NPE due to uninitialized progress dialog | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.ui 4 0 2012-01-19 11:43:23.451 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.eclipse.jface.dialogs.ProgressMonitorDialog$ProgressMonitor.done(ProgressMonitorDialog.java:192) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2356) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:75) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:65) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:456) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:772) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5048) at org.eclipse.ui.texteditor.AbstractTextEditor.doSave(AbstractTextEditor.java:4837) at org.lamport.tla.toolbox.editor.basic.TLAEditor.doSave(TLAEditor.java:502) at org.lamport.tla.toolbox.editor.basic.TLAEditorAndPDFViewer.doSave(TLAEditorAndPDFViewer.java:121) at org.lamport.tla.toolbox.ui.handler.PCalTranslateModuleHandler.execute(PCalTranslateModuleHandler.java:50) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1509) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4640) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4528) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2531) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386) Spec build invoked on Semantics ... Fix released to HEAD Created attachment 161 [details]
mylyn/context/zip
|
Summary: | Move fpbits input from "How to run" section on main model editor page to advanced page | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
fpbits logically belongs together with the fingerprint index. The best known place to be to date is under TLC options on the advanced model page. Fix released to HEAD Created attachment 162 [details]
mylyn/context/zip
|
Summary: | Replace worker input field with spinner | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.1 | ||
Attachments: | mylyn/context/zip |
Replace worker input field with spinner on main moduleditor page to prevent the user from entering non-numerical characters. This saves some load during validation. Fix released to HEAD Created attachment 163 [details]
mylyn/context/zip
|
Summary: | Prompt user to save spec first when translate to PlusCal is executed on dirty editor | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
If the user does not save the dirty editor before running the PlusCal translation, the Toolbox saves the spec automatically without raising a modal dialog confirming this action. This should be aligned how the editor generally behaves. Fix released to HEAD for all handlers that need an active editor to be present Created attachment 167 [details]
mylyn/context/zip
Arg, meant to close bug #254 instead of this one! Fix released to HEAD Created attachment 169 [details]
mylyn/context/zip
|
Summary: | Deadlock in startup code when WorkspaceSpecManager initialization and spec parser create cyclic wait graph | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Bug Depends on: | 261 | ||
Bug Blocks: | 195 | ||
Attachments: | mylyn/context/zip |
A TLA spec parser (org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(int, Map, IProgressMonitor)) requires to retrieve the WorkspaceSpecManager from org.lamport.tla.toolbox.Activator.getSpecManager() once scheduled by the org.eclipse.core.internal.jobs.JobManager. However, this call might block if another thread (e.g. org.lamport.tla.toolbox.ui.contribution.SizeControlContribution) has acquired the mutex already and is now itself waiting to be schedule by the JobManager. Fixed, the WorkspaceSpecManager (WSM) is now eagerly initialized right after the .toolbox bundle has finished its OSGi life cycle change to either RESOLVED or ACTIVE (classloading succeeds in both states) and before a org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder can scheduled. Created attachment 166 [details]
mylyn/context/zip
|
Summary: | ProverUI uses foreign preference store causing activation of foreign bundle | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Bug Depends on: | |||
Bug Blocks: | 260 | ||
Attachments: |
mylyn/context/zip
mylyn/context/zip |
The ProverUI bundle stores its preferences in the org.eclipse.ui.editors' bundle preference store. This action is performed as part of ProverUI's bundle activation which in turn triggers activation of bundle org.eclipse.ui.editors. WONTFIX right now as I have found a way to work around it to address bug #260. Created attachment 165 [details]
mylyn/context/zip
Unfortunately we cannot get away with it, because it is creating a cyclic wait graph intermittently. Fix released to HEAD Created attachment 178 [details]
mylyn/context/zip
|
Summary: | java.io.IOEXception: Stream Closed exceptions when clients call TLCTrace#getLevel() after model checking has finished | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.1 | ||
Attachments: | mylyn/context/zip |
1, 0, 0, 0, 0, 1, 0 >> Error: The error occurred when TLC was evaluating the nested expressions at the following positions: The error call stack is empty. 5275343700 states generated, 375321149 distinct states found, 215462328 states left on queue. The depth of the complete state graph search is 14. java.io.IOException: Stream Closed at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:207) at tlc2.tool.TLCTrace.getPrev(TLCTrace.java:78) at tlc2.tool.TLCTrace.getLevel(TLCTrace.java:143) at tlc2.tool.TLCTrace.getLevelForReporting(TLCTrace.java:109) at tlc2.tool.management.ModelCheckerMXWrapper.getProgress(ModelCheckerMXWrapper.java:76) at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:111) at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:45) at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:226) at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:83) at com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:205) at javax.management.StandardMBean.getAttribute(StandardMBean.java:372) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:683) at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:672) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427) at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:90) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1285) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1383) at javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:619) at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) at sun.rmi.transport.Transport$1.run(Transport.java:177) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:173) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Finished. (2012-01-16 13:05:17) Fix released to HEAD Created attachment 170 [details]
mylyn/context/zip
|
Summary: | InvalidThreadAccess exception when installing markers during startup | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | Linux | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
Restarting Toolbox with Parsing Errors View open causes Exception at next startup: osgi> TLA+ Toolbox started without arguments. !SESSION 2012-01-27 14:46:14.410 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_26 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US Framework arguments: -product org.lamport.tla.toolbox.product.standalone.product Command-line arguments: -product org.lamport.tla.toolbox.product.standalone.product -data /usr/local/src/eclipse/tlatoolbox/../newTLAToolbox -dev file:/usr/local/src/eclipse/tlatoolbox/.metadata/.plugins/org.eclipse.pde.core/TLAToolbox/dev.properties -os linux -ws gtk -arch x86_64 -consoleLog -console -clean !ENTRY org.eclipse.core.resources 2 10035 2012-01-27 14:46:19.704 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. footFileName = /usr/local/src/models/3-acc-2-ballots/PConProof.tla footFileName = /usr/local/src/models/Semantics/Semantics.tla footFileName = /usr/local/src/models/ConcatSequenceUniqueStringTest/Test.tla Spec build invoked on Semantics ... !ENTRY org.eclipse.osgi 4 0 2012-01-27 14:46:21.171 !MESSAGE An error occurred while automatically activating bundle org.eclipse.ui.editors (105). !STACK 0 org.osgi.framework.BundleException: Exception in org.eclipse.ui.internal.editors.text.EditorsPlugin.start() of bundle org.eclipse.ui.editors. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.lamport.tla.toolbox.util.TLAMarkerHelper$1.run(TLAMarkerHelper.java:145) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarker(TLAMarkerHelper.java:186) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarkers(TLAMarkerHelper.java:364) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:104) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:57) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:69) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) at org.eclipse.swt.widgets.Display.checkDevice(Display.java:752) at org.eclipse.swt.widgets.Display.disposeExec(Display.java:1187) at org.eclipse.jface.resource.ColorRegistry.hookDisplayDispose(ColorRegistry.java:268) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:123) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:106) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.<init>(WorkbenchThemeManager.java:98) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getInstance(WorkbenchThemeManager.java:58) at org.eclipse.ui.internal.Workbench.getThemeManager(Workbench.java:3449) at org.eclipse.ui.internal.editors.text.EditorsPlugin.start(EditorsPlugin.java:214) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) ... 39 more Root exception: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) at org.eclipse.swt.widgets.Display.checkDevice(Display.java:752) at org.eclipse.swt.widgets.Display.disposeExec(Display.java:1187) at org.eclipse.jface.resource.ColorRegistry.hookDisplayDispose(ColorRegistry.java:268) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:123) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:106) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.<init>(WorkbenchThemeManager.java:98) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getInstance(WorkbenchThemeManager.java:58) at org.eclipse.ui.internal.Workbench.getThemeManager(Workbench.java:3449) at org.eclipse.ui.internal.editors.text.EditorsPlugin.start(EditorsPlugin.java:214) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.lamport.tla.toolbox.util.TLAMarkerHelper$1.run(TLAMarkerHelper.java:145) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarker(TLAMarkerHelper.java:186) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarkers(TLAMarkerHelper.java:364) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:104) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:57) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:69) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.eclipse.core.resources 4 2 2012-01-27 14:46:21.203 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". !STACK 0 java.lang.NoClassDefFoundError: org/eclipse/ui/editors/text/FileDocumentProvider at org.lamport.tla.toolbox.util.TLAMarkerHelper$1.run(TLAMarkerHelper.java:145) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarker(TLAMarkerHelper.java:186) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarkers(TLAMarkerHelper.java:364) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:104) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:57) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:69) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.editors (105). at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 24 more Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.ui.internal.editors.text.EditorsPlugin.start() of bundle org.eclipse.ui.editors. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) ... 33 more Caused by: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) at org.eclipse.swt.widgets.Display.checkDevice(Display.java:752) at org.eclipse.swt.widgets.Display.disposeExec(Display.java:1187) at org.eclipse.jface.resource.ColorRegistry.hookDisplayDispose(ColorRegistry.java:268) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:123) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:106) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.<init>(WorkbenchThemeManager.java:98) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getInstance(WorkbenchThemeManager.java:58) at org.eclipse.ui.internal.Workbench.getThemeManager(Workbench.java:3449) at org.eclipse.ui.internal.editors.text.EditorsPlugin.start(EditorsPlugin.java:214) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) ... 39 more !ENTRY org.eclipse.core.resources 4 75 2012-01-27 14:46:21.434 !MESSAGE Errors occurred during the build. !SUBENTRY 1 org.lamport.tla.toolbox 4 75 2012-01-27 14:46:21.435 !MESSAGE Errors running builder 'TLA+ Syntax Parser' on project 'Semantics'. !STACK 0 java.lang.NoClassDefFoundError: org/eclipse/ui/editors/text/FileDocumentProvider at org.lamport.tla.toolbox.util.TLAMarkerHelper$1.run(TLAMarkerHelper.java:145) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarker(TLAMarkerHelper.java:186) at org.lamport.tla.toolbox.util.TLAMarkerHelper.installProblemMarkers(TLAMarkerHelper.java:364) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:104) at org.lamport.tla.toolbox.spec.parser.ModuleParserLauncher.parseModule(ModuleParserLauncher.java:57) at org.lamport.tla.toolbox.spec.parser.SpecificationParserLauncher.parseSpecification(SpecificationParserLauncher.java:38) at org.lamport.tla.toolbox.spec.nature.ParserHelper$2.run(ParserHelper.java:75) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326) at org.lamport.tla.toolbox.spec.nature.ParserHelper.rebuildSpec(ParserHelper.java:81) at org.lamport.tla.toolbox.spec.nature.TLAParsingBuilder.build(TLAParsingBuilder.java:69) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.editors (105). at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:462) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 24 more Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.ui.internal.editors.text.EditorsPlugin.start() of bundle org.eclipse.ui.editors. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) ... 33 more Caused by: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4282) at org.eclipse.swt.SWT.error(SWT.java:4197) at org.eclipse.swt.SWT.error(SWT.java:4168) at org.eclipse.swt.widgets.Display.error(Display.java:1210) at org.eclipse.swt.widgets.Display.checkDevice(Display.java:752) at org.eclipse.swt.widgets.Display.disposeExec(Display.java:1187) at org.eclipse.jface.resource.ColorRegistry.hookDisplayDispose(ColorRegistry.java:268) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:123) at org.eclipse.jface.resource.ColorRegistry.<init>(ColorRegistry.java:106) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.<init>(WorkbenchThemeManager.java:98) at org.eclipse.ui.internal.themes.WorkbenchThemeManager.getInstance(WorkbenchThemeManager.java:58) at org.eclipse.ui.internal.Workbench.getThemeManager(Workbench.java:3449) at org.eclipse.ui.internal.editors.text.EditorsPlugin.start(EditorsPlugin.java:214) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) ... 39 more Fix released to HEAD Created attachment 171 [details]
mylyn/context/zip
|
Summary: | Make TLC bound on cardinality of a set settable by user. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | bugzilla.tlaplus.net, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
Make the setBound parameter in the TLCGlobals class user-settable, which requires adding a command-line option to set it and modifying the Toolbox to allow the user to set it. This parameter, which is the maximum cardinality of a set that TLC will allow, also limits the number of initial states. Allowing the user to increase it will make it possible to check inductive invariance on larger models. *** Bug 274 has been marked as a duplicate of this bug. *** Enhancement released to HEAD + -maxSetSize parameter for TLC + UI on advanced model page (UI probably needs rewording) Created attachment 184 [details]
mylyn/context/zip
This feature is stable and will be released in Version 1.4.3. |
Summary: | UI enablement broken after spec open leaving actions and handler in disabled state | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
Opening a spec does not correctly updates the Toolbox enablement state. This causes several actions and handlers to be disabled. As a workaround, the user can manually triggering the re-evaluation of the enablement state by cycling the active workbench page (e.g. opening spec explorer). Committed a workaround that cycles workbench page activation to cause a selection changed event to occur that triggers the re-evaluation of the workbench's enablement state. Created attachment 172 [details]
mylyn/context/zip
|
Summary: | Add (general) preference page to set TLC library path | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
A new (general) preference page is needed for the user to set extra TLC library/module lookup paths. Additionally, the path vars have to be passed to TLC as a system property. Enhancement released to HEAD Project specific library path replaces the global preference. Additionally to TLC, the path variable is set for SANY. Created attachment 173 [details]
mylyn/context/zip
|
Summary: | AssertionFailedException: null argument:Found a plus cal assertion failed location without a TLC error location with the module name. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
footFileName = C:\lamport\talks\lada12\RemoveRedundantParens.tla Writing files to: Model_1\ Skipping resource: Model_1/MC.tla Skipping resource: Model_1/RemoveRedundantParens.tla Final check for the modelcheck mode. The result of the check is true TLC ARGUMENTS: [-checkpoint, 3, -fpbits, 0, -fp, 0, -config, MC.cfg, -coverage, 3, -workers, 1, -tool, -metadir, C:\lamport\talks\lada12\RemoveRedundantParens.toolbox\Model_1, MC] !ENTRY org.lamport.tla.toolbox.tool.tlc.ui 1 0 2012-02-03 12:34:13.120 !MESSAGE TLCOutputSourceRegistry for model checking maintains 2 sources. !ENTRY org.lamport.tla.toolbox.tool.tlc.ui 1 0 2012-02-03 12:34:13.120 !MESSAGE The source RemoveRedundantParens___Model_1.launch has 4 prio and 1 listeners !ENTRY org.lamport.tla.toolbox.tool.tlc.ui 1 0 2012-02-03 12:34:13.120 !MESSAGE The source Test2___Model_2.launch has 4 prio and 1 listeners !ENTRY org.eclipse.ui 4 0 2012-02-03 12:34:15.165 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.core.runtime.AssertionFailedException: null argument:Found a plus cal assertion failed location without a TLC error location with the module name.) at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.lamport.tla.toolbox.Application.start(Application.java:42) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: org.eclipse.core.runtime.AssertionFailedException: null argument:Found a plus cal assertion failed location without a TLC error location with the module name. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.ui.util.TLCUIHelper.setTLCLocationHyperlinks(TLCUIHelper.java:117) at org.lamport.tla.toolbox.tool.tlc.ui.view.TLCErrorView.fill(TLCErrorView.java:221) at org.lamport.tla.toolbox.tool.tlc.ui.view.TLCErrorView.updateErrorView(TLCErrorView.java:632) at org.lamport.tla.toolbox.tool.tlc.ui.editor.page.ResultPage$2.run(ResultPage.java:232) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 23 more !ENTRY org.eclipse.text 4 2 2012-02-03 12:34:16.112 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.text". !STACK 0 org.eclipse.core.runtime.AssertionFailedException: null argument:The state encountered without the error describing the reason for it. This is a bug. at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.lamport.tla.toolbox.tool.tlc.output.data.TLCModelLaunchDataProvider.onOutput(TLCModelLaunchDataProvider.java:249) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:89) at org.lamport.tla.toolbox.tool.tlc.output.source.CachingTLCOutputSource.onOutput(CachingTLCOutputSource.java:57) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:226) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:611) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:755) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:736) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:721) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:796) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1191) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1210) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:324) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.addIncrement(ParsingTLCOutputSink.java:47) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:39) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Unknown Source) Job 'TLC run for Model_1' terminated with status: { Done } TLC process output causing this bug: TLC2 Version 2.04 of 19 January 2012 Running in Model-Checking mode. Parsing file MC.tla Parsing file RemoveRedundantParens.tla Parsing file /usr/local/src/tla/tlatools/class/tla2sany/StandardModules/TLC.tla Parsing file /usr/local/src/tla/tlatools/class/tla2sany/StandardModules/Integers.tla Parsing file /usr/local/src/tla/tlatools/class/tla2sany/StandardModules/Sequences.tla Parsing file /usr/local/src/tla/tlatools/class/tla2sany/StandardModules/Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module TLC Semantic processing of module RemoveRedundantParens Semantic processing of module MC Starting... (2012-02-03 16:51:38) Computing initial states... Finished computing initial states: 1374 distinct states generated. Progress(3) at 2012-02-03 16:51:44: 4120 states generated (4120 s/min), 4120 distinct states found (4120 ds/min), 1372 states left on queue. Progress(3) at 2012-02-03 16:52:44: 4120 states generated (0 s/min), 4120 distinct states found (0 ds/min), 1372 states left on queue. Progress(3) at 2012-02-03 16:53:44: 4120 states generated (0 s/min), 4120 distinct states found (0 ds/min), 1372 states left on queue. Progress(3) at 2012-02-03 16:54:44: 4120 states generated (0 s/min), 4120 distinct states found (0 ds/min), 1372 states left on queue. Error: Attempted to apply the operator overridden by the Java method public static tlc2.value.Value tlc2.module.TLC.Assert(tlc2.value.Value,tlc2.value.Value), but it produced the following error: The first argument of Assert evaluated to FALSE; the second argument was: "Failure of assertion at line 150, column 5." tlc2.tool.EvalException: Attempted to apply the operator overridden by the Java method public static tlc2.value.Value tlc2.module.TLC.Assert(tlc2.value.Value,tlc2.value.Value), but it produced the following error: The first argument of Assert evaluated to FALSE; the second argument was: "Failure of assertion at line 150, column 5." at tlc2.value.MethodValue.apply(MethodValue.java:62) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:849) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:862) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:975) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:975) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1029) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:700) at tlc2.tool.ModelChecker.doNext(ModelChecker.java:404) at tlc2.tool.Worker.run(Worker.java:75) Error: The behavior up to this point is: State 1: <Initial predicate> /\ out = <<>> /\ unmatchedLeft = <<>> /\ lastMatchedLeft = -1 /\ i = 1 /\ in = << >> /\ lastAddedRight = -1 /\ pc = "Lbl_1" Error: The error occurred when TLC was evaluating the nested expressions at the following positions: 0. Line 169, column 13 to line 169, column 24 in RemoveRedundantParens 1. Line 170, column 13 to line 200, column 53 in RemoveRedundantParens 2. Line 189, column 24 to line 195, column 38 in RemoveRedundantParens 3. Line 195, column 35 to line 195, column 38 in RemoveRedundantParens 4. Line 196, column 24 to line 197, column 76 in RemoveRedundantParens 4120 states generated, 4120 distinct states found, 1372 states left on queue. The depth of the complete state graph search is 3. Finished. (2012-02-03 16:56:39) Correctly parsed output: @!@!@STARTMSG 2262:0 @!@!@ TLC2 Version 2.04 of 19 January 2012 @!@!@ENDMSG 2262 @!@!@ @!@!@STARTMSG 2187:0 @!@!@ Running in Model-Checking mode. @!@!@ENDMSG 2187 @!@!@ @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file MC.tla Parsing file Test.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\TLC.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Integers.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Sequences.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module TLC Semantic processing of module Test Semantic processing of module MC @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2012-02-06 10:35:52) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2189:0 @!@!@ Computing initial states... @!@!@ENDMSG 2189 @!@!@ @!@!@STARTMSG 2190:0 @!@!@ Finished computing initial states: 1 distinct state generated. @!@!@ENDMSG 2190 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ Attempted to check equality of integer 2 with non-integer: "3" @!@!@ENDMSG 1000 @!@!@ java.lang.RuntimeException: Attempted to check equality of integer 2 with non-integer: "3" at util.Assert.fail(Assert.java:25) at tlc2.value.IntValue.equals(IntValue.java:64) at tlc2.tool.Tool.evalAppl(Tool.java:1803) at tlc2.tool.Tool.eval(Tool.java:1212) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1010) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1021) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1029) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:700) at tlc2.tool.ModelChecker.doNext(ModelChecker.java:404) at tlc2.tool.Worker.run(Worker.java:75) @!@!@STARTMSG 2121:1 @!@!@ The behavior up to this point is: @!@!@ENDMSG 2121 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 1: <Initial predicate> /\ var = defaultInitValue /\ qvar = <<defaultInitValue, defaultInitValue, defaultInitValue>> /\ xx = defaultInitValue /\ zz = <<defaultInitValue, defaultInitValue, defaultInitValue>> /\ x = defaultInitValue /\ y = defaultInitValue /\ pc = <<"lab", "lab", "lab">> @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2103:1 @!@!@ The error occurred when TLC was evaluating the nested expressions at the following positions: 0. Line 39, column 17 to line 39, column 32 in Test 1. Line 40, column 17 to line 40, column 23 in Test 2. Line 41, column 17 to line 41, column 23 in Test @!@!@ENDMSG 2103 @!@!@ @!@!@STARTMSG 2201:0 @!@!@ The coverage statistics at 2012-02-06 10:35:52 @!@!@ENDMSG 2201 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 12 to line 25, col 12 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 15 to line 25, col 16 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 19 to line 25, col 19 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 22 to line 25, col 24 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 27 to line 25, col 28 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 31 to line 25, col 34 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 37 to line 25, col 38 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 40, col 17 to line 40, col 23 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 42, col 17 to line 42, col 50 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 30 to line 43, col 31 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 34 to line 43, col 34 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 37 to line 43, col 39 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 42 to line 43, col 45 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 48 to line 43, col 49 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2202:0 @!@!@ End of statistics. @!@!@ENDMSG 2202 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(1) at 2012-02-06 10:35:52: 1 states generated (638 s/min), 1 distinct states found (638 ds/min), 0 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2199:0 @!@!@ 1 states generated, 1 distinct states found, 0 states left on queue. @!@!@ENDMSG 2199 @!@!@ @!@!@STARTMSG 2194:0 @!@!@ The depth of the complete state graph search is 1. @!@!@ENDMSG 2194 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2012-02-06 10:35:52) @!@!@ENDMSG 2186 @!@!@ Output making the Toolbox choke: @!@!@STARTMSG 2262:0 @!@!@ TLC2 Version 2.04 of 19 January 2012 @!@!@ENDMSG 2262 @!@!@ @!@!@STARTMSG 2187:0 @!@!@ Running in Model-Checking mode. @!@!@ENDMSG 2187 @!@!@ @!@!@STARTMSG 2220:0 @!@!@ Starting SANY... @!@!@ENDMSG 2220 @!@!@ Parsing file MC.tla Parsing file Test.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\TLC.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Integers.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Sequences.tla Parsing file C:\lamport\tla\newtools\tla2-inria-workspace\tla2-inria\tlatools\class\tla2sany\StandardModules\Naturals.tla Semantic processing of module Naturals Semantic processing of module Integers Semantic processing of module Sequences Semantic processing of module TLC Semantic processing of module Test Semantic processing of module MC @!@!@STARTMSG 2219:0 @!@!@ SANY finished. @!@!@ENDMSG 2219 @!@!@ @!@!@STARTMSG 2185:0 @!@!@ Starting... (2012-02-06 10:36:45) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2189:0 @!@!@ Computing initial states... @!@!@ENDMSG 2189 @!@!@ @!@!@STARTMSG 2190:0 @!@!@ Finished computing initial states: 1 distinct state generated. @!@!@ENDMSG 2190 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ @!@!@STARTMSG 2154:0 @!@!@ Attempted to apply the operator overridden by the Java method public static tlc2.value.Value tlc2.module.TLC.Assert(tlc2.value.Value,tlc2.value.Value), but it produced the following error: @!@!@STARTMSG 2132:0 @!@!@ The first argument of Assert evaluated to FALSE; the second argument was: "Failure of assertion." @!@!@ENDMSG 2132 @!@!@ @!@!@ENDMSG 2154 @!@!@ @!@!@ENDMSG 1000 @!@!@ tlc2.tool.EvalException: @!@!@STARTMSG 2154:0 @!@!@ Attempted to apply the operator overridden by the Java method public static tlc2.value.Value tlc2.module.TLC.Assert(tlc2.value.Value,tlc2.value.Value), but it produced the following error: @!@!@STARTMSG 2132:0 @!@!@ The first argument of Assert evaluated to FALSE; the second argument was: "Failure of assertion." @!@!@ENDMSG 2132 @!@!@ @!@!@ENDMSG 2154 @!@!@ at tlc2.value.MethodValue.apply(MethodValue.java:62) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:849) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1021) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:776) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:1029) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStatesAppl(Tool.java:878) at tlc2.tool.Tool.getNextStates(Tool.java:710) at tlc2.tool.Tool.getNextStates(Tool.java:700) at tlc2.tool.ModelChecker.doNext(ModelChecker.java:404) at tlc2.tool.Worker.run(Worker.java:75) @!@!@STARTMSG 2121:1 @!@!@ The behavior up to this point is: @!@!@ENDMSG 2121 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ 1: <Initial predicate> /\ var = defaultInitValue /\ qvar = <<defaultInitValue, defaultInitValue, defaultInitValue>> /\ xx = defaultInitValue /\ zz = <<defaultInitValue, defaultInitValue, defaultInitValue>> /\ x = defaultInitValue /\ y = defaultInitValue /\ pc = <<"lab", "lab", "lab">> @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2103:1 @!@!@ The error occurred when TLC was evaluating the nested expressions at the following positions: 0. Line 39, column 17 to line 39, column 32 in Test 1. Line 40, column 17 to line 40, column 23 in Test 2. Line 41, column 17 to line 41, column 54 in Test @!@!@ENDMSG 2103 @!@!@ @!@!@STARTMSG 2201:0 @!@!@ The coverage statistics at 2012-02-06 10:36:45 @!@!@ENDMSG 2201 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 12 to line 25, col 12 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 15 to line 25, col 16 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 19 to line 25, col 19 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 22 to line 25, col 24 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 27 to line 25, col 28 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 31 to line 25, col 34 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 25, col 37 to line 25, col 38 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 40, col 17 to line 40, col 23 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 42, col 17 to line 42, col 50 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 30 to line 43, col 31 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 34 to line 43, col 34 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 37 to line 43, col 39 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 42 to line 43, col 45 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 43, col 48 to line 43, col 49 of module Test: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2202:0 @!@!@ End of statistics. @!@!@ENDMSG 2202 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(1) at 2012-02-06 10:36:45: 1 states generated (483 s/min), 1 distinct states found (483 ds/min), 0 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2199:0 @!@!@ 1 states generated, 1 distinct states found, 0 states left on queue. @!@!@ENDMSG 2199 @!@!@ @!@!@STARTMSG 2194:0 @!@!@ The depth of the complete state graph search is 1. @!@!@ENDMSG 2194 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2012-02-06 10:36:45) @!@!@ENDMSG 2186 @!@!@ Added test case Created attachment 174 [details]
mylyn/context/zip
The offending text in the output is: @!@!@STARTMSG 2154:0 @!@!@ Attempted to apply the operator overridden by the Java method public static tlc2.value.Value tlc2.module.TLC.Assert(tlc2.value.Value,tlc2= .value.Value), but it produced the following error: @!@!@STARTMSG 2132:0 @!@!@ The first argument of Assert evaluated to FALSE; the second argument was: "Failure of assertion." @!@!@ENDMSG 2132 @!@!@ @!@!@ENDMSG 2154 @!@!@ Fix released to HEAD |
Summary: | GotoMatchingParen markers override ShowUses markers | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
LL: "Also, I've encountered a mysterious bug. The markers which are added by the ShowUses command used to get the color specified by an annotationType entry in a plugin.xml file that I defined for that command. When I added the GotoMatchingParen command, I defined a different annotationType entry for the marker it displays. The markers added by the ShowUses command now have the color specified by the annotationType I created for the GotoMatchingParen command. Do you understand markers well enough to be able to figure this out easily?" Fix released to HEAD Created attachment 176 [details]
mylyn/context/zip
|
Summary: | Hyperlink (StyledRange) in TLC error view go to a subrange dependning on where the users clicks | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
LL: "Another weird thing I observe is that if I click (or Control-click) on location number 0, depending on where I click, it highlights either the entire TLA+ formula pc = "Lbl_1" or just the last double-quote. The Eclipse console shows nothing when I do the clicking." Bug got most probably introduces with revision 17310 - Added hyperlinking of failed assertion locations printed by the PlusCal translator. Fixed in HEAD Created attachment 175 [details]
mylyn/context/zip
|
Summary: | Spec#rootfile initializes to null, causing NPE in Spec.initProjectProperties and failing Toolbox to start | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
!ENTRY org.eclipse.core.jobs 4 2 2012-02-12 23:20:31.690 !MESSAGE An internal error occurred during: "Calculating specification size...". !STACK 0 java.lang.NullPointerException at org.lamport.tla.toolbox.spec.Spec.initProjectProperties(Spec.java:200) at org.lamport.tla.toolbox.spec.Spec.<init>(Spec.java:125) at org.lamport.tla.toolbox.spec.manager.WorkspaceSpecManager.<init>(WorkspaceSpecManager.java:77) at org.lamport.tla.toolbox.Activator.getSpecManager(Activator.java:303) at org.lamport.tla.toolbox.ui.contribution.ParseStatusContributionItem$1.run(ParseStatusContributionItem.java:85) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.lamport.tla.toolbox 4 0 2012-02-12 23:20:31.752 !MESSAGE A spec did not load correctly, probably because it was modified outside the Toolbox. Error occurred in toolbox/spec/Spec.initProjectProperties() Fix released to HEAD by safeguarding against NPE (proper fix would IMO guard against Spec#rootFile becoming null in the first place) Created attachment 177 [details]
mylyn/context/zip
|
Summary: | Unify Toolbox logging to use .log file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 |
In many places the Toolbox logs to System.out instead of .metadata/.log. This means one has to search two different locations log output with System.out being hidden when the Toolbox runs in default mode (without "-console" parameter). Fix released to HEAD |
Summary: | Add common superclass to TLC domain specific exceptions | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
All TLC domain specific exceptions should be superclassed with a common TLCException to easily distinguish domain exception from regular Java programming exceptions. Bug #267 shows the usefulness. |
Summary: | TLC model editor memory slides has to handle pre-existing model values | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
LL: "When I open an existing model created before the addition of the way to specify the fraction of memory allocated to TLC was added, that value appears as 99%. This is not good, because if someone updates and then goes to rerun an existing model, he’s not likely to open up the “How to Run” field to check if something has changed. If this can’t be fixed, then we’ll have to warn users of this." Fix released to HEAD that raises a warning if legacy value is detected. Created attachment 180 [details]
mylyn/context/zip
|
Summary: | Add TLA+ set upper bound command line parameter and Toolbox UI | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED DUPLICATE | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
tlc2.TLCGlobals.setBound defines an upper bound for the size of a TLA+ set. Currently this value is hard coded to 1.000.000. Some models require a larger upper bound though, and thus a command line parameter as well as corresponding Toolbox UI becomes necessary. |
Summary: | Set eclipse.buildId at build time to log Toolbox version in .log file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Set eclipse.buildId at build time to log Toolbox version in .log file. This is done by setting the system property "eclipse.buidId" in the .product file. To avoid hard coding the build value, a version bump to Tycho 0.14.x is necessary. |
Summary: | Nested TLC VM might differ from Toolbox VM | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | 1.4.2 | ||
Attachments: | mylyn/context/zip |
Due to the way the Toolbox creates the nested JVM (used to launch the TLC model checker), it might use a different one (e.g. 64bit Toolbox vs. 32bit nested JVM). This can cause errors if for example the heap space has been calculated on 64bit and does not work on 32bit. Fix released to HEAD Created attachment 179 [details]
mylyn/context/zip
|
Summary: | TLC does not seem to terminate on SAT problem | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Michael Leuschel <leuschel> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.4.1 | ||
Hardware: | x86 64-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
Background: For experimentation purposes I have encoded a few SAT problems in TLA+ and wanted to check how TLC performs on them (also compared to ProB with our new TLA2B converter; of course if one has a pure SAT problem one is better off using a pure SAT solver; but the idea is that in TLA+ or B one can of course mix the SAT problem with other types of constraints). Problem Description: If I use Init == TypeInv /\ Sol then I was not able to find a solution with TLC (after 5 hours). I hence tried to provide part of a solution with the OneSol definition. In the specification below, if I change OneSol to: OneSol == (~x1 /\ ~x2 /\ ~x3 /\ ~x4 /\ ~x5 /\ ~x6 /\ x7 /\ x8 /\ ~x9 /\ ~x10 /\ ~x11 /\ ~x12 /\ ~x13 /\ x14 /\ x15 /\ x16 (* /\ ~x17/\ ~x18 /\ x19 /\ ~x20 *)) (* encode part of first solution found by ProB *) and perform model checking with TLC (toolbox 1.4.1 64 bit on Mac OS X 10.7.3) TLC runs for about a second and then I get the message "Too many possible next states for the last state in the trace.". I don't understand why this message appears. Have I encoded something badly in TLA+ ? If I use the version of OneSol provided below, TLC does not seem to terminate. OneSol == (~x1 /\ ~x2 /\ ~x3 /\ ~x4 /\ ~x5 /\ ~x6 /\ x7 /\ x8 /\ ~x9 /\ ~x10 /\ ~x11 /\ ~x12 /\ ~x13 /\ x14 /\ x15 (* /\ x16 /\ ~x17/\ ~x18 /\ x19 /\ ~x20 *)) (* encode part of first solution found by ProB *) I am not sure what is going wrong here; there should only be 2^5 = 32 possibilities to try out? Probably I did something wrong in my TLA+ encoding of the SAT problem ?? ----- MODULE uf20_02_partial ----- (* CNF Translated to TLA *) (* ProB can find all 29 solutions in much less than a second *) (* TLC says either with partial or full Sol provided: "Too many possible next states for the last state in the trace." *) (* this works for up to 4 remaining variables; with 5 remaining variables x16-x20 to be found: at least 35 min runtime *) VARIABLES x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20 TypeInv == x1\in BOOLEAN /\ x2\in BOOLEAN /\ x3\in BOOLEAN /\ x4\in BOOLEAN /\ x5\in BOOLEAN /\ x6\in BOOLEAN /\ x7\in BOOLEAN /\ x8\in BOOLEAN /\ x9\in BOOLEAN /\ x10\in BOOLEAN /\ x11\in BOOLEAN /\ x12\in BOOLEAN /\ x13\in BOOLEAN /\ x14\in BOOLEAN /\ x15\in BOOLEAN /\ x16\in BOOLEAN /\ x17\in BOOLEAN /\ x18\in BOOLEAN /\ x19\in BOOLEAN /\ x20\in BOOLEAN Sol == ( ~x10 \/ ~x16 \/ x5 ) /\ ( x16 \/ ~x6 \/ x5 ) /\ ( ~x17 \/ ~x14 \/ ~x18 ) /\ ( ~x10 \/ ~x15 \/ x19 ) /\ ( ~x1 \/ ~x9 \/ ~x18 ) /\ ( x3 \/ x7 \/ ~x6 ) /\ ( ~x13 \/ x1 \/ x6 ) /\ ( ~x2 \/ ~x16 \/ ~x20 ) /\ ( x7 \/ x8 \/ x18 ) /\ ( ~x7 \/ x10 \/ ~x20 ) /\ ( x2 \/ ~x14 \/ ~x17 ) /\ ( x2 \/ x1 \/ x19 ) /\ ( x7 \/ ~x20 \/ ~x1 ) /\ ( ~x11 \/ x1 \/ ~x17 ) /\ ( x3 \/ ~x12 \/ x19 ) /\ ( ~x3 \/ ~x13 \/ x6 ) /\ ( ~x13 \/ x3 \/ ~x12 ) /\ ( x5 \/ ~x7 \/ ~x12 ) /\ ( x20 \/ x8 \/ ~x16 ) /\ ( ~x13 \/ ~x6 \/ x19 ) /\ ( ~x5 \/ x1 \/ x14 ) /\ ( x9 \/ ~x5 \/ x18 ) /\ ( ~x12 \/ ~x17 \/ ~x1 ) /\ ( ~x20 \/ ~x16 \/ x19 ) /\ ( x12 \/ x10 \/ ~x11 ) /\ ( x6 \/ ~x7 \/ ~x2 ) /\ ( x13 \/ ~x10 \/ x17 ) /\ ( ~x20 \/ x8 \/ ~x16 ) /\ ( ~x10 \/ ~x1 \/ ~x8 ) /\ ( ~x7 \/ ~x3 \/ x19 ) /\ ( x19 \/ ~x1 \/ ~x6 ) /\ ( x19 \/ ~x2 \/ x13 ) /\ ( ~x2 \/ x20 \/ ~x9 ) /\ ( ~x8 \/ ~x20 \/ x16 ) /\ ( ~x13 \/ ~x1 \/ x11 ) /\ ( x15 \/ ~x12 \/ ~x6 ) /\ ( ~x17 \/ ~x19 \/ x9 ) /\ ( x19 \/ ~x18 \/ x16 ) /\ ( x7 \/ ~x8 \/ ~x19 ) /\ ( ~x3 \/ ~x7 \/ ~x1 ) /\ ( x7 \/ ~x17 \/ ~x16 ) /\ ( ~x2 \/ ~x14 \/ x1 ) /\ ( ~x18 \/ ~x10 \/ ~x8 ) /\ ( ~x16 \/ x5 \/ x8 ) /\ ( x4 \/ x8 \/ x10 ) /\ ( ~x20 \/ ~x11 \/ ~x19 ) /\ ( x8 \/ ~x16 \/ ~x6 ) /\ ( x18 \/ x12 \/ x8 ) /\ ( ~x5 \/ ~x20 \/ ~x10 ) /\ ( x16 \/ x17 \/ x3 ) /\ ( x7 \/ ~x1 \/ ~x17 ) /\ ( x17 \/ ~x4 \/ x7 ) /\ ( x20 \/ ~x9 \/ ~x13 ) /\ ( x13 \/ x18 \/ x16 ) /\ ( ~x16 \/ ~x6 \/ x5 ) /\ ( x5 \/ x17 \/ x7 ) /\ ( ~x12 \/ ~x17 \/ ~x6 ) /\ ( ~x20 \/ x19 \/ ~x5 ) /\ ( x9 \/ ~x19 \/ x16 ) /\ ( ~x13 \/ ~x16 \/ x11 ) /\ ( ~x4 \/ ~x19 \/ ~x18 ) /\ ( ~x13 \/ x10 \/ ~x15 ) /\ ( x16 \/ ~x7 \/ ~x14 ) /\ ( ~x19 \/ ~x7 \/ ~x18 ) /\ ( ~x20 \/ x5 \/ x13 ) /\ ( x12 \/ ~x6 \/ x4 ) /\ ( x7 \/ x9 \/ ~x13 ) /\ ( x16 \/ x3 \/ x7 ) /\ ( x9 \/ ~x1 \/ x12 ) /\ ( ~x3 \/ x14 \/ x7 ) /\ ( x1 \/ x15 \/ x14 ) /\ ( ~x8 \/ ~x11 \/ x18 ) /\ ( x19 \/ ~x9 \/ x7 ) /\ ( ~x10 \/ x6 \/ x2 ) /\ ( x14 \/ x18 \/ ~x11 ) /\ ( ~x9 \/ ~x16 \/ x14 ) /\ ( x1 \/ x11 \/ ~x20 ) /\ ( x11 \/ x12 \/ ~x4 ) /\ ( x13 \/ ~x11 \/ ~x14 ) /\ ( x17 \/ ~x12 \/ x9 ) /\ ( x14 \/ x9 \/ x1 ) /\ ( x8 \/ x19 \/ x4 ) /\ ( x6 \/ ~x13 \/ ~x20 ) /\ ( ~x2 \/ ~x13 \/ x11 ) /\ ( x14 \/ ~x13 \/ x17 ) /\ ( x9 \/ ~x11 \/ x18 ) /\ ( ~x13 \/ ~x6 \/ x5 ) /\ ( x5 \/ x19 \/ ~x18 ) /\ ( ~x4 \/ x10 \/ x11 ) /\ ( ~x18 \/ ~x19 \/ ~x20 ) /\ ( x3 \/ ~x9 \/ x8 ) /\ TRUE OneSol == (~x1 /\ ~x2 /\ ~x3 /\ ~x4 /\ ~x5 /\ ~x6 /\ x7 /\ x8 /\ ~x9 /\ ~x10 /\ ~x11 /\ ~x12 /\ ~x13 /\ x14 /\ x15 (* /\ x16 /\ ~x17/\ ~x18 /\ x19 /\ ~x20 *)) (* encode part of first solution found by ProB *) FullSol == (~x1 /\ ~x2 /\ ~x3 /\ ~x4 /\ ~x5 /\ ~x6 /\ x7 /\ x8 /\ ~x9 /\ ~x10 /\ ~x11 /\ ~x12 /\ ~x13 /\ x14 /\ x15 /\ x16 /\ ~x17 /\ ~x18 /\ x19 /\ ~x20) (* encode first solution found by ProB *) Init == TypeInv /\ OneSol /\ Sol DLK == 1=2 /\ x1'=x1 (* always deadlocks *) Next == DLK ======================= To compute the set of initial states from your initial predicate TypeInv /\ OneSol /\ Sol TLC first finds all states satisfying TypeInv and then throws away ones not satisfying OneSol or Sol. There are 2^20 states satisfying TypeInv, which is more than TLC will handle. Currently, TLC will handle at most 10^6 states; we intend to make that a settable parameter. However, the parameter will have to be small enough so all the states will fit in memory. Explicit-state and SAT-based model checking are inherently different and can do different things. You have discovered one thing that SAT solvers are better at. If you try running TLC on hundreds of machines, you'll see what explicit-state model checking is better at. A number of years ago a preliminary version of a SAT-solver based model checker for TLA+, called BTLC, was implemented as a summer project. It was promising, but we have never found anyone to finish it. |
Summary: | TLC reports error when asked to print a function whose domain is a Cartesian product | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
Having the Toolbox evaluate the expression [i \in (1..2) \X (1..2) |-> TRUE] causes TLC to report an error in the Java method public static tlc2.value.Value tlc2.module.TLC.PrintT(tlc2.value.Value) This seems to happen on any function whose domain is a Cartesian product. This was caused by a NullPointerException in tlc2/value/FcnLambdaValue.deepCopy(). Fixed by simply testing for a null value and not performing the operation that the method was trying to do if the value is null. This bug is mysterious because it was not present in the pre-tlc2 version, and I don't think there have been any changes to the code since then that would have caused it. Moreover, I think that a couple of times when debugging the problem, the exception did not occur on the input that was producing it. (But I may be mistaken about that.) |
Summary: | TLC bug caused by TLC's not preserving the semantics of CHOOSE | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | normal | ||
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: |
Spec exhibiting the bug
Configuration file for running outside Toolbox |
Running TLC on the spec written by Tom Rodeheffer that I will attach finds a deadlock (as it should) and then produces the following error when trying to generate the error trace: Failed to recover the initial state from its fingerprint. This is probably a TLC bug(2). The problem occurs because the value that TLC computes for a CHOOSE depends on TLC's internal representation of its argument. To compute the 2nd state of the trace, TLC sets the variables 'set' and 'fun' to S1 and Ch(S1), respectively, where Ch(S1) equals CHOOSE of an expression containing S1. Fingerprinting that state causes TLC to canonicalize the representation of the value of 'set', changing its representation of the value of S1. When TLC constructs the error trace, it must re-execute the spec to get the states in the trace. When it tries to compute the 2nd state of the trace, it uses the canonicalized representation of S1, causing it to compute a different value of variable 'set' than it did the first time, so it doesn't find a state with the correct fingerprint as the next state of the trace. (Note that the error message is misleading, since it's not the intiial state that TLC fails to recover.) There seem to be two possible fixes. The first is to canonicalize the argument of CHOOSE whenever it is evaluated. The second is to create a separate deep copy of the state before fingerprinting it. The first seems like the best solution, since I can't think of any practical case in which this would cause performance problems. However, I will consult with Yuan Yu before doing anything about this. Created attachment 182 [details]
Spec exhibiting the bug
Created attachment 183 [details]
Configuration file for running outside Toolbox
Reassigning it to me. |
Summary: | "Additional Definitions" entry being put in wrong part of MC.tla file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.2 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
A model's user-specified definitions are being put in the MC.tla file after the definitions for the CONSTANT parameters. This makes it impossible for the values substituted for CONSTANT parameters to contain operators defined in those user-specified definitions. The user-specified definitions should go immediately after the EXTENDS statement in the MC.tla file. The user-specified definitions should actually be added to the MC.tla file after the section containing the CONSTANT declarations for the model values (which come from declarations on the Advanced Model page and from substitutions of a set of model values for a declared CONSTANT) and before the section containing the definitions that define new symbols equal to the values substituted for CONSTANT parameters. The MC.tla file is written in the buildForLaunch method in the TLCModelLaunchDelegate class. These two sections are added to the file by the call of writer.addConstants, and the user-specified definitions are added by the call of writer.addFormulaList in that same class. Thus, the writer.addConstants method needs to be broken into two separate methods with the writer.addFormulaList call coming between them. It looks like the same change has to be made in the writeModelInfo method of the TraceExplorerDelegate module. Whoops, it's more complicated than I thought. The Writer.addConstants method also adds definitions for the SYMMETRY declarations for a CONSTANT instantiated with a symmetry set of model values. Those definitions have to come after the definitions for the values of CONSTANT parameters. It looks like the addConstants method should be broken into two pieces, the first adding a section containing the CONSTANT declarations for the model values and the definitions for declared CONSTANTS that are instantiated by a set of model values, and the second adding a section containing the definitions for declared CONSTANTS that are instantiated by expressions (ordinary values). Change made. TLC regression tests passed, as well as PlusCal regression tests. |
Summary: | Apparent race condition between saving spec and running TLC | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | 1.4.2 | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- |
I got the following anomalous behavior, which was repeatable. However, when I closed the Toolbox and reran it, the behavior disappeared. I am therefore going to submit this and then immediately close the bug report, so there will be a record of this in case it happens again. I am running TLC on a spec with no behavior spec, only evaluating a constant expression. If I run TLC with the spec not saved, I get a popup asking if I want to save it. I click OK, and one of three things may happen. 1. It runs TLC correctly. 2. It pops up an error window saying something like the model can't be checked because the spec is unparsed. If I click OK, it the proceeds to run TLC. 3. It runs TLC, but reports bogus errors in the expression I'm trying to evaluate--possibly because it's reading a really old MC.tla file. If I hit run again it sometimes gets another similar error, and it sometimes runs TLC correctly. If I hit run a third time, it runs TLC correctly. The behavior is locally repeatable--that is, if one of these things happens, I make a trivial modification to the spec and run TLC again, the same thing probably happens. If I wait a while, I can get a different behavior. As promised, I'm now closing the report. |
Summary: | The F5 menu (Find Definition or Declaration) doesn't handle infix operator symbols properly. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLA+ Editor | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
Typing into the F5 menu should restrict the choices to ones whose prefix has been typed. However, this doesn't work for the symbols ** and \succ, and presumably not for other symbols that are not all letters or numbers. A trivial fix. |
Summary: | java.lang.ClassFormatError: tlc2/util/Sort | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Steve Glaser <bugs> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED INVALID | ||
Severity: | major | CC: | lamport, simon |
Priority: | P3 | ||
Version: | 1.4.2 | ||
Hardware: | x86 64-bit | ||
OS: | Windows 7 | ||
Target Version: | --- |
Running on Windows 7 64 bit Enterprise, trying to check my first model (OneBitClock). On MacOS / Lion, this works perfectly. On Windows, I get the following in the User Output panel under "TLC output generated by evaluating Print and PrintT expressions". java.lang.ClassFormatError: tlc2/util/Sort at tlc2.tool.fp.DiskFPSet.flushTable(DiskFPSet.java:725) at tlc2.tool.fp.DiskFPSet.checkFPs(DiskFPSet.java:932) at tlc2.tool.ModelChecker.reportSuccess(ModelChecker.java:756) at tlc2.tool.ModelChecker.modelCheck(ModelChecker.java:217) at tlc2.TLC.process(TLC.java:661) at tlc2.TLC.main(TLC.java:168) Model is: ---------------------------- MODULE OneBitClock ---------------------------- VARIABLE b Init1 == (b=0) \/ (b=1) Next1 == \/ /\ (b = 0) /\ (b' = 1) \/ /\ (b = 1) /\ (b' = 0) ============================================================================= \* Modification History \* Last modified Tue Apr 10 10:52:12 PDT 2012 by sglaser \* Created Mon Apr 09 20:04:20 PDT 2012 by sglaser Initial predicate is "Init1", Next prediate is "Next1", Invariant is "b \in {0, 1}" The problem turned out to be corrupted files, and it went away when the Toolbox was downloaded again. |
Summary: | Toolbox not handling TLC error message properly. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
Create this spec VARIABLES F Init == F \in BOOLEAN Next == F' \in BOOLEAN Create a model that asks TLC to check the Property []<>[]F <=> <>[]F TLC produces this error message @!@!@STARTMSG 1000:1 @!@!@ TLC threw the unexpected exception java.lang.RuntimeException: @!@!@STARTMSG 2213:0 @!@!@ TLC cannot handle the temporal formula line 14, col 1 to line 14, col 17 of module MC @!@!@ENDMSG 2213 @!@!@ This was probably caused by an error in the spec or model. See the TLC Console for clues to what happened. @!@!@ENDMSG 1000 @!@!@ which causes the Toolbox to throw an exception. I thought this might be a TLC bug for not starting message 2213:0 on a new line, but the Toolbox throws the same exception even if the @!@!@STARTMSG 2213:0 @!@!@ begins on a new line. The exception the Toolbox is throwing is: java.lang.IllegalArgumentException: Bug parsing the regions at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCAnalyzer.processTag(TagBasedTLCAnalyzer.java:189) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCAnalyzer.addTagEnd(TagBasedTLCAnalyzer.java:82) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser$TLCOutputPartitionChangeListener.documentPartitioningChanged(TagBasedTLCOutputIncrementalParser.java:217) at org.eclipse.jface.text.AbstractDocument.fireDocumentPartitioningChanged(AbstractDocument.java:611) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:755) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:736) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:721) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:796) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1191) at org.eclipse.jface.text.AbstractDocument.replace(AbstractDocument.java:1210) at org.lamport.tla.toolbox.tool.tlc.output.source.TagBasedTLCOutputIncrementalParser.addIncrement(TagBasedTLCOutputIncrementalParser.java:324) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.addIncrement(ParsingTLCOutputSink.java:47) at org.lamport.tla.toolbox.tool.tlc.output.ParsingTLCOutputSink.appendText(ParsingTLCOutputSink.java:39) at org.lamport.tla.toolbox.tool.tlc.output.internal.BroadcastStreamListener.streamAppended(BroadcastStreamListener.java:44) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.run(OutputStreamMonitor.java:257) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.debug.internal.core.OutputStreamMonitor$ContentNotifier.notifyAppend(OutputStreamMonitor.java:267) at org.eclipse.debug.internal.core.OutputStreamMonitor.fireStreamAppended(OutputStreamMonitor.java:116) at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:156) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207) at java.lang.Thread.run(Unknown Source) I should have mentioned that this happens with one other error that TLC throws on a Property it can't check. I imagine there are a whole bunch of TLC error reports that will generate the same exception, which is thrown by a case that Simon decided not to handle. The problem turned out to be that in my recent changes to make the miscellaneous EC.GENERAL class of error messages more helpful, I inadvertently created a class of TLC nested error message that the Toolbox's parser for TLC output was not expected. This was an error message whose body consisted of: raw text followed by an error message with BEGIN and END tags followed by raw text. The error seems to be fixed by combining the second raw text item with the first. The correction will appear in the next minor release. |
Summary: | Toolbox occasionally chooses old TLC version after software upgrade | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | TLA+ Editor | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
A software upgrade can install a newer TLC version into the Toolbox. This can lead to undefined behavior when model checking, because the classpath might still refer to the classes of the old model checker. Hence, the code needs to verify it only loads the latest TLC model checker version installed by the upgrade. Fix released to HEAD Created attachment 185 [details]
mylyn/context/zip
|
Summary: | Out of bounds array exception thrown when loading a spec | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED WORKSFORME | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows Vista | ||
Target Version: | --- | ||
Attachments: | The Spec File |
When loading the spec that I will attach when Bugzilla lets me, the Toolbox throws an exception and leaves the editor in a state where, starting around line 160 and extending to the next comment, it colors everything as a comment. This fixes itself when the spec is modified and saved. Below is the relevant part of the console log. !ENTRY org.eclipse.ui 4 4 2012-06-05 02:13:03.818 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2012-06-05 02:13:03.820 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:13:04.198 !MESSAGE Spec build invoked on AtomicBakeryGInitialized ... !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:13:08.568 !MESSAGE Resulting status is: parsed ... build invocation finished. Detailed state of 'BufferedDocumentScanner:' fOffset= 760 fBufferOffset= 27000 fBufferLength= 760 fRangeOffset= 0 fRangeLength= 27760 !ENTRY org.eclipse.core.resources 4 566 2012-06-05 02:13:10.121 !MESSAGE An error occurred while traversing resources. !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.eclipse.core.resources 4 2 2012-06-05 02:13:10.208 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". !STACK 1 org.eclipse.core.internal.resources.ResourceException(/AtomicBakeryGInitialized)[566]: java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !SUBENTRY 1 org.eclipse.core.resources 4 566 2012-06-05 02:13:10.251 !MESSAGE An error occurred while traversing resources. !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !SUBENTRY 1 org.eclipse.core.resources 4 566 2012-06-05 02:13:10.272 !MESSAGE An error occurred while traversing resources. !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.eclipse.core.resources 4 75 2012-06-05 02:13:10.291 !MESSAGE Errors occurred during the build. !SUBENTRY 1 org.lamport.tla.toolbox 4 75 2012-06-05 02:13:10.291 !MESSAGE Errors running builder 'PCal Algorthim Definition Detecting Builder' on project 'AtomicBakeryGInitialized'. !STACK 1 org.eclipse.core.internal.resources.ResourceException(/AtomicBakeryGInitialized)[566]: java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !SUBENTRY 2 org.eclipse.core.resources 4 566 2012-06-05 02:13:10.291 !MESSAGE An error occurred while traversing resources. !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !SUBENTRY 1 org.eclipse.core.resources 4 566 2012-06-05 02:13:10.292 !MESSAGE An error occurred while traversing resources. !STACK 0 java.lang.ArrayIndexOutOfBoundsException: 1000 at org.lamport.tla.toolbox.editor.basic.util.BufferedDocumentScanner.read(BufferedDocumentScanner.java:106) at org.lamport.tla.toolbox.editor.basic.TLAPartitionScanner.nextToken(TLAPartitionScanner.java:96) at org.eclipse.jface.text.rules.FastPartitioner.documentChanged2(FastPartitioner.java:388) at org.eclipse.jface.text.AbstractDocument.updateDocumentStructures(AbstractDocument.java:696) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:793) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:219) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(ResourceTextFileBuffer.java:575) at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(ResourceTextFileBuffer.java:286) at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(ResourceFileBuffer.java:245) at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connect(TextFileBufferManager.java:112) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.getDocument(PCalDetectingBuilder.java:119) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder$PCalDetectingVisitor.visit(PCalDetectingBuilder.java:75) at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112) at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110) at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) at org.lamport.tla.toolbox.spec.nature.PCalDetectingBuilder.build(PCalDetectingBuilder.java:56) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:13:10.384 !MESSAGE Added a parse result listener.There are now 1 listeners. !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:14:10.304 !MESSAGE Spec build invoked on AtomicBakeryGInitialized ... !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:14:14.880 !MESSAGE Resulting status is: parsed ... build invocation finished. !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:15:54.097 !MESSAGE Removed a parse result listener.There are now 0 listeners. !ENTRY org.eclipse.ui 4 4 2012-06-05 02:15:54.231 !MESSAGE Plugin org.lamport.tla.toolbox, extension org.eclipse.ui.perspectiveExtensions, id toolbox.view.ToolboxWelcomeView: Attribute 'relative' not defined. This attribute is required when relationship="left". !ENTRY org.eclipse.ui 4 4 2012-06-05 02:15:54.238 !MESSAGE Unable to process element: view in perspective extension: null !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:16:01.042 !MESSAGE Spec build invoked on AtomicBakeryGInitialized ... !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:16:04.170 !MESSAGE Resulting status is: parsed ... build invocation finished. !ENTRY org.lamport.tla.toolbox 1 -1 2012-06-05 02:16:04.573 !MESSAGE Added a parse result listener.There are now 1 listeners. Created attachment 186 [details]
The Spec File
Hi Leslie, I cannot reproduce the behavior (exception) with the steps outlined in comment #1. No matter what I try, it (the spec) always loads fine (on Linux/64bit). Markus After closing the Toolbox, rebooting my system, getting a good night's sleep, and cleaning the screen, the error has disappeared for me too. Just another of the imponderables of Eclipse. |
Summary: | Issues when TLC reports, "The variable x was changed while it is specified as UNCHANGED at %1" | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
This is Version 1.4.3.b of 24 April 2012 and includes: - SANY Version 2.1 of 20 July 2011 - TLC Version 2.05 of 24 April 2012 - PlusCal Version 1.8 of 30 March 2012 - TLATeX Version .9 of 19 September 2007 Running on Windows 7 32-bit I'm writing a specification with about 10 variables and lots of complex nested if/then rules about when various subsets of the variables change. Each branch of each if/then contains an conjunct for UNCHANGED <<some list of vars>>. There's little commonality between them. If we make a mistake writing one of the UNCHANGED conjuncts, TLC will report an error like this:, The variable q_ingress_south was changed while it is specified as UNCHANGED at %1 There are 2 problems: - The error doesn't report the line number (it literally reports "%1") - TLC doesn't stop when it reports the error, so we don't see the actions and states that caused it. So to find the cause of the errors, we have to do a 'binary search' by commenting out actions and parts of actions, and re-running the model checker to see if the error still happens. This is very tedious and takes quite a lot of time. Please could the above problem be fixed? thanks, Chris This bug was fixed on 18 May 2012. The fix will appear in the next release. |
Summary: | FPSetManager reports negative distinct states due to int overflow | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Component: | Core Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | mylyn/context/zip |
FPSetManager reports negative distinct states due to a 2^31 int overflow in tlc2.tool.distributed.FPSetManager.size(). The method implementation incorrectly uses an int variable to store an intermediate result. Fix released to repo Created attachment 187 [details]
mylyn/context/zip
|
Summary: | apparent TLC DiskFPSet out of memory when maxTblCnt is Integer MAX_VALUE | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tom Rodeheffer <tomr> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows 7 | ||
Target Version: | --- |
I was running TLC 2.05 on a machine with 128 GB of physical memory. The Java heap size was set to 117 GB (command line option -Xmx117955m) and the TLC fpbits option was set to 0. I do not know what the toolbox uses for fpmem when invoking TLC, but assuming that TLC takes the default of fpMemSize = -1, TLCRuntime.getInstance().getFPMemSize would turn this into 0.25 * Runtime.getRuntime().maxMemory(). Now I don’t know for sure what that last routine does, but I assume it returns the maximum Java heap size. This would cause fpMemSize to be 29488 MB. Then ModelChecker calls FPSet.getFPSet(fpBits, fpMemSizeInBytes). FPSet.getFPSet converts from fpMemSizeInBytes to fpMemSizeInFPs by dividing by the size of a long, which would result in fpMemSizeInFPs = 3686 M. To get its maxMemCnt, DiskFPSet divides its maxInMemoryCapacity by its AuxiliaryStorageRequirement, which it has set at 2.5. So maxMemCnt = 1474 M. This results in computing logMaxMemCnt = 31. (Note that the computation of logMaxMemCnt rounds up.) Since logMaxMemCnt = 31, the truncation logic in the DiskFPSet constructor gives us maxTblCnt = Integer.MAX_VALUE. Anyway, my TLC job ran for many hours never calling DiskFPSet.flushTable until finally it reached Integer.MAX_VALUE distinct fingerprints. I know that it never called flushTable because the MC.fp file was zero bytes long. I know that the number of distinct fingerprints was near Integer.MAX_VALUE because the last progress report on the console gave a number of distinct states found that was getting close to Integer.MAX_VALUE. Then my TLC job died with a Java "Out of Memory" exception. This error was reproducible: I ran the job a second time and (many hours later) got the same error. I suspect that the call new long[this.tblCnt] in DiskFPSet.flushTable caused Java to raise its "Out of Memory" exception. Although *why* it would do so is a mystery, since it only needed 16 GB and presumably it still had plenty of room on its heap, since it was only at a commit size of 71 GB and its heap was supposed to be 117 GB. However, perhaps Java does not like to create an array that large. Hi Tom, platform says 64bit, but is this also true for the JVM that you use? Btw. in Java a 2D array is actually an array of array objects. Not a simple matrix like in C. Thus you have to add 12+4 bytes for each first-level row for the object header and the length of the nested array. Assuming tblCnt get close to Integer.MAX_VALUE you end up with significant overhead. For the record, here is Tom's response: "...the answer is, yes, I was using a 64bit JVM." Memory allocated for DiskFPSets has been changed to prevent it from exceeding the allocation limit. This should put an end to OOMs. For the space overhead observed, new DiskFPSet implementations show better characteristics. |
Summary: | TLC getFPSet and MultiFPSet disagree on storage unit | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tom Rodeheffer <tomr> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bugzilla.tlaplus.net |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLC version 2.05. FPSet.getFPSet() takes its fpMemSize parameter in bytes. When there is no custom factory and fpBits > 0, getFPSet invokes the MultiFPSet constructor with an fpMemSize parameter in FPs (having divided by the size of a long, i.e. 8). The MultiFPSet constructor divides its fpMemSize by the number of subsidiary fingerprint sets, and calls FPSet.getFPSet to create each of them. However, the MultiFPSet constructor fails to convert from FPs back to bytes, as expected by FPSet.getFPSet. The result of this bug is that only 1/8th of the specified fingerprint memory is allocated when fpBits > 0. One easy fix to this bug would be to change the line in FPSet.getFPSet which currently reads set = new MultiFPSet(fpBits, fpMemSizeInFPs); to read instead set = new MultiFPSet(fpBits, fpMemSizeInBytes); Fixed in HEAD as suggest in comment #0 |
Summary: | TLC MultiFPSet computes size as int | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tom Rodeheffer <tomr> |
Component: | TLA Tools | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bugzilla.tlaplus.net |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLC version 2.05. When using fpbits > 0, assuming no custom factory, the top-level FPSet is a MultiFPSet. In TLC's statistics summary or in a progress report, when it prints the number of distinct states found, the value it prints comes from theFPSet.size(). Note that FPSet.size() is declared to return a long, so that a correct number of fingerprints can be returned for models that have 2**31 or more distinct states. For MultiFPSet, the implementation of size() just sums up the sizes of each of its subsidiary fingerprint sets. Unfortunately, the variable "sum" that MultiFPSet.size uses to accumulate the sum is declared as an *int*. This means that when using fpbits > 0, the number of distinct states is reported incorrectly for models that have 2**31 or more distinct states. An easy fix for this bug is to replace the line in MultiFPSet.size that reads int sum = 0; with a line that reads long sum = 0; Thx, I have fixed this separately already. |
Summary: | PlusCal macro expansion clobbers local variables | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | michael.deardeuff |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Mac OS | ||
Target Version: | --- |
PlusCal macro expansion clobbers local variables of the same name. With the given macro macro SendUDP(from, to, msg) \* has parameter named msg begin udp[channel(from, to)] := udp[channel(from, to)] \cup {msg}; end macro I'd expect this line \* has local variable named msg which is *not* passed as parameter to macro SendUDP(self, {PrevNode(self, msg.newConfig)}, [type |-> "listen"]); to compile to \* the local variable msg stays intact udp' = [udp EXCEPT ![channel(self, ({PrevNode(self, msg.newConfig)}))] = udp[channel(self, ({PrevNode(self, msg.newConfig)}))] \cup {([type |-> "listen"])}] but what I get instead is \* the local variable msg is replaced with the macro's idea of "msg" udp' = [udp EXCEPT ![channel(self, ({PrevNode(self, ([type |-> "listen"]).newConfig)}))] = udp[channel(self, ({PrevNode(self, ([type |-> "listen"]).newConfig)}))] \cup {([type |-> "listen"])}] Notice how the local variable msg got replaced with the value of msg according to the macro's point of view, even though 'msg' was assigned to some other value. Naming the last parameter of the macro something else (newMsg, for example) produces the expected behavior. Tool versions, as copied from About on the TLAToolbox This is Version 1.4.3.c of 24 May 2012 and includes: - SANY Version 2.1 of 20 July 2011 - TLC Version 2.05 of 18 May 2012 - PlusCal Version 1.8 of 4 May 2012 - TLATeX Version .9 of 19 September 2007 The substitution of arguments for macro parameters in the body of the macro is done one argument at a time, instead of "simultaneously" for all arguments. The fix is a simple matter of reprogramming the method substituteForAll(Vector, Vector, boolean) in tlatools/src/pcal/TLAExpr.java. It will be done in the fullness of time. The fix will appear in the next public release, which should be within a week or three. |
Summary: | Checking liveness failed with java.io.IOException: Negative seek offsetjava.io.IOException | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- |
Hi Markus, Leslie, Remember last year that I kept hitting ‘negative seek offset’ exceptions when checking safety on huge state-spaces? You guys fixed them all. I just started checking liveness for the first time, and I just hit a similar error: The error occurred when TLC was checking liveness. The exception was a java.io.IOException: Negative seek offsetjava.io.IOException: Negative seek offset at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:212) at tlc2.tool.liveness.DiskGraph.getNode(DiskGraph.java:145) at tlc2.tool.liveness.DiskGraph.getPath(DiskGraph.java:309) at tlc2.tool.liveness.LiveWorker.printTrace(LiveWorker.java:521) at tlc2.tool.liveness.LiveWorker.checkComponent(LiveWorker.java:290) at tlc2.tool.liveness.LiveWorker.checkSccs(LiveWorker.java:119) at tlc2.tool.liveness.LiveWorker.run(LiveWorker.java:613) (I’ve pasted a longer piece of the TLC console log at the end of this email.) I’m using Markus’ branch as of Friday October 12th. As this is a liveness issue, I suspect that this would happen with the ‘mainline’ version too. (I am not adding any extra JVM command-line parameters, so I’m using the default configuration.) wget http://tla.msr-inria.inria.fr/kuppe/memopt/products/TLAToolbox-1.4.3.f-linux.gtk.x86_64.zip I’m running on a x86_64 Ubuntu 12 (Precise Pangolin) machine. The machine has 60+ GB of ram. I'm giving 93% (55730 mb) to TLC. In this model I’m only checking liveness, not invariants. I’m not using a state constraint, but the state-space should still be finite as I’m setting various CONSTANTS to be finite sets. It only took 15 minutes to hit this error. Last time we hit "negative seek offset" errors, one of the issues was that fingerprint files were bigger than 2GB. But this time all file-sizes are small: $ ls -lrt * -rw-rw-r-- 1 ubuntu ubuntu 126944 Oct 14 05:39 GroverAbstractLSNs.tla -rw-rw-r-- 1 ubuntu ubuntu 992 Oct 14 05:39 MC.tla -rw-rw-r-- 1 ubuntu ubuntu 638 Oct 14 05:39 MC.cfg -rw-rw-r-- 1 ubuntu ubuntu 18952 Oct 14 05:54 MC.out -rw-rw-r-- 1 ubuntu ubuntu 18952 Oct 14 05:54 MC_TE.out 12-10-14-05-39-33: total 396856 -rw-rw-r-- 1 ubuntu ubuntu 0 Oct 14 05:39 MC.fp -rw-rw-r-- 1 ubuntu ubuntu 91196 Oct 14 05:39 0 -rw-rw-r-- 1 ubuntu ubuntu 89143 Oct 14 05:40 1 -rw-rw-r-- 1 ubuntu ubuntu 91392 Oct 14 05:40 2 -rw-rw-r-- 1 ubuntu ubuntu 89971 Oct 14 05:40 3 -rw-rw-r-- 1 ubuntu ubuntu 90594 Oct 14 05:40 4 -rw-rw-r-- 1 ubuntu ubuntu 86240 Oct 14 05:40 5 -rw-rw-r-- 1 ubuntu ubuntu 84231 Oct 14 05:40 6 -rw-rw-r-- 1 ubuntu ubuntu 84507 Oct 14 05:41 7 -rw-rw-r-- 1 ubuntu ubuntu 90005 Oct 14 05:41 8 -rw-rw-r-- 1 ubuntu ubuntu 93901 Oct 14 05:41 9 -rw-rw-r-- 1 ubuntu ubuntu 93858 Oct 14 05:41 10 -rw-rw-r-- 1 ubuntu ubuntu 85201 Oct 14 05:41 11 -rw-rw-r-- 1 ubuntu ubuntu 88321 Oct 14 05:41 12 -rw-rw-r-- 1 ubuntu ubuntu 92285 Oct 14 05:42 13 -rw-rw-r-- 1 ubuntu ubuntu 88822 Oct 14 05:42 14 -rw-rw-r-- 1 ubuntu ubuntu 89402 Oct 14 05:42 15 -rw-rw-r-- 1 ubuntu ubuntu 88027 Oct 14 05:42 16 -rw-rw-r-- 1 ubuntu ubuntu 85350 Oct 14 05:42 17 -rw-rw-r-- 1 ubuntu ubuntu 84216 Oct 14 05:43 18 -rw-rw-r-- 1 ubuntu ubuntu 90258 Oct 14 05:43 19 -rw-rw-r-- 1 ubuntu ubuntu 85403 Oct 14 05:43 20 -rw-rw-r-- 1 ubuntu ubuntu 89137 Oct 14 05:43 21 -rw-rw-r-- 1 ubuntu ubuntu 85349 Oct 14 05:43 22 -rw-rw-r-- 1 ubuntu ubuntu 85298 Oct 14 05:43 23 -rw-rw-r-- 1 ubuntu ubuntu 85461 Oct 14 05:43 24 -rw-rw-r-- 1 ubuntu ubuntu 86292 Oct 14 05:43 25 -rw-rw-r-- 1 ubuntu ubuntu 91264 Oct 14 05:44 26 -rw-rw-r-- 1 ubuntu ubuntu 86471 Oct 14 05:44 27 -rw-rw-r-- 1 ubuntu ubuntu 93909 Oct 14 05:44 28 -rw-rw-r-- 1 ubuntu ubuntu 91947 Oct 14 05:44 29 -rw-rw-r-- 1 ubuntu ubuntu 91771 Oct 14 05:44 30 -rw-rw-r-- 1 ubuntu ubuntu 107299 Oct 14 05:45 31 -rw-rw-r-- 1 ubuntu ubuntu 96079 Oct 14 05:45 32 -rw-rw-r-- 1 ubuntu ubuntu 89403 Oct 14 05:45 33 -rw-rw-r-- 1 ubuntu ubuntu 92515 Oct 14 05:45 34 -rw-rw-r-- 1 ubuntu ubuntu 88907 Oct 14 05:45 35 -rw-rw-r-- 1 ubuntu ubuntu 91888 Oct 14 05:45 36 -rw-rw-r-- 1 ubuntu ubuntu 95905 Oct 14 05:46 37 -rw-rw-r-- 1 ubuntu ubuntu 89007 Oct 14 05:46 38 -rw-rw-r-- 1 ubuntu ubuntu 93472 Oct 14 05:46 39 -rw-rw-r-- 1 ubuntu ubuntu 92524 Oct 14 05:46 40 -rw-rw-r-- 1 ubuntu ubuntu 92667 Oct 14 05:47 41 -rw-rw-r-- 1 ubuntu ubuntu 92455 Oct 14 05:47 42 -rw-rw-r-- 1 ubuntu ubuntu 92121 Oct 14 05:47 43 -rw-rw-r-- 1 ubuntu ubuntu 97391 Oct 14 05:47 44 -rw-rw-r-- 1 ubuntu ubuntu 91336 Oct 14 05:47 45 -rw-rw-r-- 1 ubuntu ubuntu 92986 Oct 14 05:48 46 -rw-rw-r-- 1 ubuntu ubuntu 92133 Oct 14 05:48 47 -rw-rw-r-- 1 ubuntu ubuntu 87972 Oct 14 05:48 48 -rw-rw-r-- 1 ubuntu ubuntu 91020 Oct 14 05:48 49 -rw-rw-r-- 1 ubuntu ubuntu 89989 Oct 14 05:48 50 -rw-rw-r-- 1 ubuntu ubuntu 92158 Oct 14 05:48 51 -rw-rw-r-- 1 ubuntu ubuntu 87648 Oct 14 05:49 52 -rw-rw-r-- 1 ubuntu ubuntu 89554 Oct 14 05:49 53 -rw-rw-r-- 1 ubuntu ubuntu 90250 Oct 14 05:49 54 -rw-rw-r-- 1 ubuntu ubuntu 89254 Oct 14 05:49 55 -rw-rw-r-- 1 ubuntu ubuntu 97444 Oct 14 05:49 56 -rw-rw-r-- 1 ubuntu ubuntu 94853 Oct 14 05:49 57 -rw-rw-r-- 1 ubuntu ubuntu 94462 Oct 14 05:50 58 -rw-rw-r-- 1 ubuntu ubuntu 91076 Oct 14 05:50 59 -rw-rw-r-- 1 ubuntu ubuntu 91081 Oct 14 05:50 60 -rw-rw-r-- 1 ubuntu ubuntu 92830 Oct 14 05:50 61 -rw-rw-r-- 1 ubuntu ubuntu 94807 Oct 14 05:50 62 -rw-rw-r-- 1 ubuntu ubuntu 94674 Oct 14 05:51 63 -rw-rw-r-- 1 ubuntu ubuntu 90176 Oct 14 05:51 64 -rw-rw-r-- 1 ubuntu ubuntu 91334 Oct 14 05:51 65 -rw-rw-r-- 1 ubuntu ubuntu 92464 Oct 14 05:51 66 -rw-rw-r-- 1 ubuntu ubuntu 89912 Oct 14 05:51 67 -rw-rw-r-- 1 ubuntu ubuntu 91776 Oct 14 05:51 68 -rw-rw-r-- 1 ubuntu ubuntu 91597 Oct 14 05:52 69 -rw-rw-r-- 1 ubuntu ubuntu 92623 Oct 14 05:52 70 -rw-rw-r-- 1 ubuntu ubuntu 90377 Oct 14 05:52 71 -rw-rw-r-- 1 ubuntu ubuntu 93229 Oct 14 05:52 72 -rw-rw-r-- 1 ubuntu ubuntu 90329 Oct 14 05:52 73 -rw-rw-r-- 1 ubuntu ubuntu 92656 Oct 14 05:52 74 -rw-rw-r-- 1 ubuntu ubuntu 92673 Oct 14 05:53 75 -rw-rw-r-- 1 ubuntu ubuntu 98171 Oct 14 05:53 76 -rw-rw-r-- 1 ubuntu ubuntu 92580 Oct 14 05:53 77 -rw-rw-r-- 1 ubuntu ubuntu 92234 Oct 14 05:53 78 -rw-rw-r-- 1 ubuntu ubuntu 92532 Oct 14 05:53 79 -rw-rw-r-- 1 ubuntu ubuntu 96655 Oct 14 05:54 80 -rw-rw-r-- 1 ubuntu ubuntu 96008 Oct 14 05:54 81 -rw-rw-r-- 1 ubuntu ubuntu 92763 Oct 14 05:54 82 -rw-rw-r-- 1 ubuntu ubuntu 6141600 Oct 14 05:54 ptrs_6 -rw-rw-r-- 1 ubuntu ubuntu 5982832 Oct 14 05:54 ptrs_5 -rw-rw-r-- 1 ubuntu ubuntu 4045280 Oct 14 05:54 ptrs_4 -rw-rw-r-- 1 ubuntu ubuntu 5661856 Oct 14 05:54 ptrs_3 -rw-rw-r-- 1 ubuntu ubuntu 6908384 Oct 14 05:54 ptrs_2 -rw-rw-r-- 1 ubuntu ubuntu 7586496 Oct 14 05:54 ptrs_1 -rw-rw-r-- 1 ubuntu ubuntu 7934336 Oct 14 05:54 ptrs_0 -rw-rw-r-- 1 ubuntu ubuntu 4045280 Oct 14 05:54 ptrs_9 -rw-rw-r-- 1 ubuntu ubuntu 5015744 Oct 14 05:54 ptrs_8 -rw-rw-r-- 1 ubuntu ubuntu 5775968 Oct 14 05:54 ptrs_7 -rw-rw-r-- 1 ubuntu ubuntu 21089904 Oct 14 05:54 nodes_9 -rw-rw-r-- 1 ubuntu ubuntu 21089904 Oct 14 05:54 nodes_4 -rw-rw-r-- 1 ubuntu ubuntu 28015740 Oct 14 05:54 nodes_8 -rw-rw-r-- 1 ubuntu ubuntu 35775612 Oct 14 05:54 nodes_7 -rw-rw-r-- 1 ubuntu ubuntu 30279168 Oct 14 05:54 nodes_3 -rw-rw-r-- 1 ubuntu ubuntu 38965260 Oct 14 05:54 nodes_6 -rw-rw-r-- 1 ubuntu ubuntu 36855300 Oct 14 05:54 nodes_5 -rw-rw-r-- 1 ubuntu ubuntu 36989040 Oct 14 05:54 nodes_2 -rw-rw-r-- 1 ubuntu ubuntu 40312068 Oct 14 05:54 nodes_1 -rw-rw-r-- 1 ubuntu ubuntu 41744676 Oct 14 05:54 nodes_0 -rw-rw-r-- 1 ubuntu ubuntu 8314680 Oct 14 05:54 MC.st A longer piece of the tail of the TLC log (i.e. this includes the end of the log) … snip … Progress(12) at 2012-10-14 05:53:37: 1175984 states generated (86,041 s/min), 656319 distinct states found (44,641 ds/min), 420203 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2192:0 @!@!@ Checking temporal properties for the current state space... @!@!@ENDMSG 2192 @!@!@ @!@!@STARTMSG 2116:1 @!@!@ Temporal properties were violated. @!@!@ENDMSG 2116 @!@!@ @!@!@STARTMSG 2264:1 @!@!@ The following behavior constitutes a counter-example: @!@!@ENDMSG 2264 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ TLC threw an unexpected exception. This was probably caused by an error in the spec or model. The error occurred when TLC was checking liveness. The exception was a java.io.IOException: Negative seek offsetjava.io.IOException: Negative seek offset at java.io.RandomAccessFile.seek(Native Method) at tlc2.util.BufferedRandomAccessFile.seek(BufferedRandomAccessFile.java:212) at tlc2.tool.liveness.DiskGraph.getNode(DiskGraph.java:145) at tlc2.tool.liveness.DiskGraph.getPath(DiskGraph.java:309) at tlc2.tool.liveness.LiveWorker.printTrace(LiveWorker.java:521) at tlc2.tool.liveness.LiveWorker.checkComponent(LiveWorker.java:290) at tlc2.tool.liveness.LiveWorker.checkSccs(LiveWorker.java:119) at tlc2.tool.liveness.LiveWorker.run(LiveWorker.java:613) @!@!@ENDMSG 1000 @!@!@ @!@!@STARTMSG 2201:0 @!@!@ The coverage statistics at 2012-10-14 05:54:40 @!@!@ENDMSG 2201 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1205, col 16 to line 1205, col 59 of module GroverAbstractLSNs: 600344 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1206, col 28 to line 1206, col 37 of module GroverAbstractLSNs: 600344 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1206, col 39 to line 1206, col 55 of module GroverAbstractLSNs: 600344 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1206, col 57 to line 1206, col 67 of module GroverAbstractLSNs: 600344 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1254, col 16 to line 1254, col 58 of module GroverAbstractLSNs: 183985 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1255, col 28 to line 1255, col 37 of module GroverAbstractLSNs: 183985 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1255, col 39 to line 1255, col 55 of module GroverAbstractLSNs: 183985 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1255, col 57 to line 1255, col 67 of module GroverAbstractLSNs: 183985 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1275, col 8 to line 1275, col 35 of module GroverAbstractLSNs: 9379 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1305, col 14 to line 1305, col 105 of module GroverAbstractLSNs: 9379 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1307, col 14 to line 1309, col 79 of module GroverAbstractLSNs: 9379 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1310, col 14 to line 1310, col 55 of module GroverAbstractLSNs: 9379 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1430, col 13 to line 1430, col 84 of module GroverAbstractLSNs: 1251836 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 1431, col 13 to line 1431, col 62 of module GroverAbstractLSNs: 1251836 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 108 to line 278, col 121 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 14 to line 278, col 23 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 26 to line 278, col 35 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 38 to line 278, col 48 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 51 to line 278, col 67 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 278, col 70 to line 278, col 105 of module GroverAbstractLSNs: 0 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 918, col 15 to line 924, col 69 of module GroverAbstractLSNs: 458128 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 925, col 15 to line 925, col 56 of module GroverAbstractLSNs: 458128 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 926, col 27 to line 926, col 36 of module GroverAbstractLSNs: 458128 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2221:0 @!@!@ line 926, col 38 to line 926, col 48 of module GroverAbstractLSNs: 458128 @!@!@ENDMSG 2221 @!@!@ @!@!@STARTMSG 2202:0 @!@!@ End of statistics. @!@!@ENDMSG 2202 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(12) at 2012-10-14 05:54:40: 1251837 states generated (82,864 s/min), 692890 distinct states found (45,865 ds/min), 440060 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2199:0 @!@!@ 1251837 states generated, 692890 distinct states found, 440060 states left on queue. @!@!@ENDMSG 2199 @!@!@ @!@!@STARTMSG 2186:0 @!@!@ Finished. (2012-10-14 05:54:40) @!@!@ENDMSG 2186 @!@!@ Studying the code it occurred to me that besides an obvious long overflow, it could also be the case that the DiskGraph does not contain the node requested (in which case it returns -1). Pity that the exception does not show the actual negative value. The illustrated behavior graph [1] as part of Codeplex bug #8 shows an init state (137.0) without a self loop. Technically this means that the state has been added to the behavior graph via DiskGraph#addInitNode(..) only. It has not been visisted subsequently (which would mean it gets added with DiskGraph#addNextNode(..)) again, which is the case for all the other init states in this behavior graph. Such an init state's file pointer is always -1, which would result in the negative seek offset IOExecption reported by this bug. [1] https://www.codeplex.com/Download/AttachmentDownload.ashx?ProjectName=tlaplus&WorkItemId=8&FileAttachmentId=1441621 (In reply to Markus Alexander Kuppe from comment #2) > The illustrated behavior graph [1] as part of Codeplex bug #8 shows an init > state (137.0) without a self loop. > > Technically this means that the state has been added to the behavior graph > via DiskGraph#addInitNode(..) only. It has not been visisted subsequently > (which would mean it gets added with DiskGraph#addNextNode(..)) again, which > is the case for all the other init states in this behavior graph. > > Such an init state's file pointer is always -1, which would result in the > negative seek offset IOExecption reported by this bug. > > [1] > https://www.codeplex.com/Download/AttachmentDownload. > ashx?ProjectName=tlaplus&WorkItemId=8&FileAttachmentId=1441621 This analysis is incorrect in that the state 137.0 has indeed been added via DiskGraph#addNextNode() but due to its tableau index being 0 not equipped with a self loop. The same applies to state 504.0 that is also missing a self loop. The tableau particle with index 0 is: {<>/\ (x=2) /\ ([]-(x=1)), ()<>/\ (x=2) /\ ([]-(x=1))} and the corresponding states to 137 and 504 are: /\ b = FALSE /\ x = 0 and /\ b = FALSE /\ x = 2 The mku-liveness branch now contains a fix [1] for the IOException. The IOException is throw when a model has one or more successor-less initial states AND a counterexample has to be returned due to a violation of a liveness property. This makes it a rare condition which is probably why we haven't seen more reports. The path construction (DiskGraph#getPath(long)) starts its (breadth-first) search from all initial states. If only one of the initial states has no successors, its disk file pointer will be -1 and subsequently cause the IOException. The pointer value is -1 because the initial state has been added to the DiskGraph as an initial state only but never "upgraded" to be a state with successors. The code writes an initial state only to disk, if it is upgraded. The fix is to simply skip such initial states during the path construction. Since the initial state has no successors, it won't be the end of any path (except for the path with length one starting and ending at the very initial state. This case is handled separately.). [1] http://tlaplus.codeplex.com/SourceControl/changeset/070bcee9436bfac34527e6752730e86ccf4b1f56 |
Summary: | TLC crash: ArrayIndexOutOfBoundsException: -1073741821 in tlc2.util.Sort | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: |
mylyn/context/zip
For the record, the unit tests that reproduces the ArrayIndexOutOfBounds exception and performance-compares with java.util.Arrays#sort mylyn/context/zip |
I was running Markus’ memopt branch, as of around October 12th 2012. I was running in single-machine mode, not distributed. The machine is x86_64 running Ubuntu 12. It has 60+ GB of RAM and I gave TLC about 55GB. But Markus says this is likely an existing bug in TLC: >>It appears to be caused by an int overflow in TLC's quicksort implementation when the size of the array gets close to Integer.MAX_VALUE. %) I’ve listed the number and sizes of on-disk files at the end of this email. The machine has 60+ GB ram, with ~ 55 GB given to TLC. I am not passing any extra args to the JVM command-line. The progress stats (see snip of the tail of the TLC log) show that TLC didn’t discover any new states in the minute or so before the crash. It went from finding 3 million states per minute to finding 0 states per minute, and crashed shortly after that. The exception was a java.lang.ArrayIndexOutOfBoundsException: -1073741821java.lang.ArrayIndexOutOfBoundsException: -1073741821 at tlc2.util.Sort.quickSort(Sort.java:191) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.LongArray(Sort.java:182) at tlc2.tool.fp.LSBDiskFPSet$LSBFlusher.prepareTable(LSBDiskFPSet.java:65) at tlc2.tool.fp.DiskFPSet$Flusher.flushTable(DiskFPSet.java:1209) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:400) at tlc2.tool.ModelChecker.doNext(ModelChecker.java:438) at tlc2.tool.Worker.run(Worker.java:75) Snip of the tail of the TLC log: Progress(16) at 2012-10-14 23:21:32: 1962435307 states generated (4,979,084 s/min), 1067311637 distinct states found (2,598,569 ds/min), 797699699 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(16) at 2012-10-14 23:22:32: 1971144096 states generated (8,708,789 s/min), 1071850754 distinct states found (4,539,117 ds/min), 801017556 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(16) at 2012-10-14 23:23:32: 1974837733 states generated (3,693,637 s/min), 1073741838 distinct states found (1,891,084 ds/min), 802392525 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2200:0 @!@!@ Progress(16) at 2012-10-14 23:24:32: 1974837733 states generated (0 s/min), 1073741838 distinct states found (0 ds/min), 802392525 states left on queue. @!@!@ENDMSG 2200 @!@!@ @!@!@STARTMSG 2201:0 @!@!@ … snip coverage statistics @!@!@ENDMSG 2202 @!@!@ @!@!@STARTMSG 1000:1 @!@!@ TLC threw an unexpected exception. This was probably caused by an error in the spec or model. See the TLC Console for clues to what happened. The exception was a java.lang.ArrayIndexOutOfBoundsException: -1073741821java.lang.ArrayIndexOutOfBoundsException: -1073741821 at tlc2.util.Sort.quickSort(Sort.java:191) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.quickSort(Sort.java:209) at tlc2.util.Sort.LongArray(Sort.java:182) at tlc2.tool.fp.LSBDiskFPSet$LSBFlusher.prepareTable(LSBDiskFPSet.java:65) at tlc2.tool.fp.DiskFPSet$Flusher.flushTable(DiskFPSet.java:1209) at tlc2.tool.fp.DiskFPSet.put(DiskFPSet.java:400) at tlc2.tool.ModelChecker.doNext(ModelChecker.java:438) at tlc2.tool.Worker.run(Worker.java:75) $ ls –lrt * -rw-rw-r-- 1 ubuntu ubuntu 2493 Oct 14 19:23 MC.tla -rw-rw-r-- 1 ubuntu ubuntu 964 Oct 14 19:23 MC.cfg -rw-rw-r-- 1 ubuntu ubuntu 278614 Oct 14 23:26 MC.out -rw-rw-r-- 1 ubuntu ubuntu 278614 Oct 14 23:26 MC_TE.out There are a lot of files in this subdirectory of the above directory: $ ls -lrt 12-10-14-19-23-41/ | wc -l 99700 Here are the most interesting ones: 12-10-14-19-23-41: total 26266404 -rw-rw-r-- 1 ubuntu ubuntu 0 Oct 14 19:23 MC.fp -rw-rw-r-- 1 ubuntu ubuntu 125957 Oct 14 20:21 31377 -rw-rw-r-- 1 ubuntu ubuntu 126518 Oct 14 20:21 31378 -rw-rw-r-- 1 ubuntu ubuntu 125278 Oct 14 20:21 31379 … snip a lot of files… -rw-rw-r-- 1 ubuntu ubuntu 127395 Oct 14 23:22 131068 -rw-rw-r-- 1 ubuntu ubuntu 126343 Oct 14 23:22 131069 -rw-rw-r-- 1 ubuntu ubuntu 126384 Oct 14 23:22 131070 -rw-rw-r-- 1 ubuntu ubuntu 14291272184 Oct 14 23:23 MC.st Local tests show that this is indeed caused by a bug in tlc2.util.Sort when the length of the array to be sorted gets close to Integer.MAX_VALUE. Since (basic) performance comparison between tlc2.util.Sort and java.util.Arrays show the JDK implementation come out as the winner, I am going to replace tlc2.util.Sort with java.util.Arrays in tlc2.tool.fp.LSBDiskFPSet.LSBFlusher.prepareTable(), tlc2.tool.fp.DiskFPSet.completeRecovery() and tlc2.tool.fp.DiskFPSet.recoverFP(long). This fix only applies to my memopt branch. trunk probably does not exhibit this behavior anyway as it tends to crash with OOM before hitting the overflow in Sort. I am going to leave this bug open for now though. Dead code in tlc2.util.BigSet and tlc2.util.SetOfLong still makes use of tlc2.util.Sort. I would suggest to replace tlc2.util.Sort with java.util.Arrays generally, but will wait for Leslie to make a decision. Created attachment 188 [details]
mylyn/context/zip
Created attachment 189 [details]
For the record, the unit tests that reproduces the ArrayIndexOutOfBounds
exception and performance-compares with java.util.Arrays#sort
Replaced all tlc2.util.Sort references with java.util.Array. (java.util.Arrays - at least down to Java 1.5 - sorts longs (primitives) directly without any Object conversion. Created attachment 190 [details]
mylyn/context/zip
|
Summary: | Suggestion for more control over checkpoints | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Markus Alexander Kuppe <bugzilla.tlaplus.net> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | simon |
Priority: | P3 | ||
Version: | 1.5 | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
In addition to being able to completely disable checkpoints with '-checkpoint 0', it would be great to have an option to disable periodic checkpoints, but write a checkpoint if an error is encountered. As mentioned previously, I don’t need periodic checkpoints as a fault-tolerance measure, and the cost is prohibitive with billions of states. But after an error occurs, it is sometimes possible to fix a formula in a way that does not invalidate the existing behaviors and states. E.g. This just happened to me because my spec hit a deadlock that was due to a missing case in my ‘legitimate termination’ condition. I fixed the condition but had to restart model-checking from scratch. It would be important to be able to disable writing even this checkpoint, as for huge state/behavior spaces, writing even a single checkpoint may take too long. thanks, Chris FWIW while working on distributed TLC, a JMX method to forcefully create a checkpoint has been implemented. In order to satisfy this use case, I would thus be sufficient to prompt the user with a y/n before terminating the TLC process. The yes case is then just a matter of calling the JMX method. Btw. the JMX method can either be triggered from inside the TLC process or from the Toolbox. |
Summary: | TLAPM doesn't handle complex nested EXCEPT expressions | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Stephan Merz <stephan.merz> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport, Stephan.Merz |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | TLA+ module exhibiting the bug |
Created attachment 191 [details]
TLA+ module exhibiting the bug
The PM doesn't correctly translate EXCEPT expressions of the form
[ [arr EXCEPT ![x][y] = foo] EXCEPT ![u][v] = bar]
where a nested array access appears on the left-hand side of an EXCEPT.
The corresponding expressions generated (at least) for Zenon and Isabelle are
syntactically not well-formed and lead to parse errors.
Hi Stephan, before I close the bug, I wanted to make sure this is the intended normalization of the expression. It looks the right one for me and I have added the corresponding test case which passes successfully now. [[arr EXCEPT ![x] = [arr[x] EXCEPT ![y] = foo]] EXCEPT ![u] = [[arr EXCEPT ![x] = [arr[x] EXCEPT ![y] = foo]][u] EXCEPT ![v] = bar]] If this is the intended behaviour, please notify me so I can close the bug. Best regards, Tomer Normalization was approved by Stephan. Hi Tomer,
yes, this looks like it is the right expansion.
Thanks,
Stephan
> Hi Stephan,
>
> before I close the bug, I wanted to make sure this is the intended
> normalization of the expression. It looks the right one for me and I have added
> the corresponding test case which passes successfully now.
>
> [[arr EXCEPT ![x] = [arr[x] EXCEPT ![y] = foo]] EXCEPT ![u] = [[arr EXCEPT ![x]
> = [arr[x] EXCEPT ![y] = foo]][u] EXCEPT ![v] = bar]]
>
> If this is the intended behaviour, please notify me so I can close the bug.
>
> Best regards,
> Tomer
|
Summary: | Flattening of modules generates duplicate copies | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When the PM flatten the modules dependencies, it might add the same submodules several times. For example for: A / \ B C \ / D it will add A twice as it computes recursively the flattened version of B and C. The above occurs also on simpler cases First set a testing environment (choose between Kaputt and OUnit) and add a specification tests for the required behavior of the specific function module/m_dep.schedule The required behavior is to load only one instance of each module in the flattened version of the target modules (the ones specified in the command line). Two tests were added to m_dep.mlt to assert the problem. The issue was fixed by Damien and passes the tests |
Summary: | Soundness bug due to error in translating EXCEPT | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Stephan Merz <stephan.merz> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
A very weird bug in the translation of EXCEPT can lead to unsoundness. Specifically, EXCEPT expressions with multiple right-hand sides are translated incompletely. The PM omits the updates to record component "b" in the following theorem, making Isabelle succeed in the proof of the truncated expression. LEMMA ASSUME NEW foo, NEW bar, foo = [a |-> 1, b |-> 2, c |-> 3], bar = [a |-> 2, b |-> 2, c |-> 2] PROVE [foo EXCEPT !.a = 3, !.b = 4, !.c = 1] = [bar EXCEPT !.c = 1, !.b = 5, !.a = 3] OBVIOUS The translation should indeed yield the following, which is not proved. LEMMA ASSUME NEW foo, NEW bar, foo = [a |-> 1, b |-> 2, c |-> 3], bar = [a |-> 2, b |-> 2, c |-> 2] PROVE [[[foo EXCEPT !.a = 3] EXCEPT !.b = 4] EXCEPT !.c = 1] = [[[bar EXCEPT !.c = 1] EXCEPT !.b = 5] EXCEPT !.a = 3] OBVIOUS First observed with TLAPM 1.1.2 (svn rev. 30034). This bug (and others) were fixed with the help of Kaustuv and Damien. Tests t1-t5 in e_elab.mlt pass successfully now. |
Summary: | TLAPS does not accept "_" in a proof-step name. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | minor | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
TLA+ syntax allows “_” to be used in a step name, as in <3>a_x . TLAPS doesn’t accept it. I don’t think anyone needs to delay their holiday plans to fix this. |
Summary: | SMT backend loops on proof obligation | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Stephan Merz <stephan.merz> |
Component: | TLAPS | Assignee: | hernan.vanzetto |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport, tomer.libal |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Launch tlapm on the attached module for lines 184-185 from the Toolbox or the command line, like so: $ tlapm --toolbox 184 185 TwoProcsOneBitMutexNoDeadlock.tla The PM goes into what seems like an infinite loop. The console output is: ---------------------------------------------------------------------------------- (* TLAPM version 1.1.2 (commit 30027) *) (* launched at 2012-12-31 15:51:13 with command line: *) (* tlapm --toolbox 184 185 TwoProcsOneBitMutexNoDeadlock.tla *) (* loading fingerprints in "TwoProcsOneBitMutexNoDeadlock.tlaps/fingerprints" *) @!!BEGIN @!!type:obligation @!!id:60 @!!loc:185:19:185:21 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:61 @!!loc:185:22:185:24 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:62 @!!loc:185:26:185:30 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:63 @!!loc:185:32:185:36 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:64 @!!loc:185:38:185:42 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:65 @!!loc:185:44:185:48 @!!status:to be proved @!!END @!!BEGIN @!!type:obligationsnumber @!!count:6 @!!END check_trivial = false for 60 before expand_defs after expand_defs after normalize ---------------------------------------------------------------------------------- After interrupting one gets the following additional output: >>> Type assignments: Next :: * Procs :: SetOf(Int) SafetyInv :: * TypeInv :: * i :: Int pc :: (* -> *) self :: Int vars :: * x :: (* -> *) >>> Unexpanded operators: SafetyInv, vars, Procs, TypeInv, Next ---------------------------------------------------------------------------------- Remove "SMT" and Zenon proves the step immediately, so the problem is with the SMT backend (the Z3 and Yices backends have the same problem). NB: Trying to interrupt the prover from the Toolbox has no effect, the process must be killed from the shell. This is a separate bug (or enhancement request). Bug reported by Chris Newcombe and confirmed by Stephan. Hi Hernan, I re-assign the bug per Stephan's comment. I will create another bug assigned to me with regard to terminating threads from the toolbox and will cc you. |
Summary: | SMT backend doesn't handle CASE properly | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Stephan Merz <stephan.merz> |
Component: | TLAPS | Assignee: | hernan.vanzetto |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport, tomer.libal |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Below is a TLA+ module (submitted by Chris Newcombe) in which the initial condition contains a CASE expression for which the SMT backend throws an exception: ----- >>> Type assignments: Procs :: SetOf(*) flag :: (* -> Bool) pc :: (Int -> Str) turn :: Int >>> Unexpanded operators: Procs File "/Users/merz/projects/INRIA-MSR/examples/PetersonTwoProcs.tla", line 172, characters 11-15: Error: Cannot infer type of <<CASE >> File "/Users/merz/projects/INRIA-MSR/examples/PetersonTwoProcs.tla", line 172, characters 11-15: Error: SMT backend translation error. Cannot process the expression CASE [SMT] Error: unknown exception in \/ IF 0 = 1 THEN FALSE ELSE (CASE ) = "ncs0" \/ IF 0 = 1 THEN FALSE ELSE (CASE ) = "e0a" \/ IF 0 = 1 THEN FALSE ELSE (CASE ) = "e0b" \/ IF 0 = 1 THEN FALSE ELSE (CASE ) = "e0c" \/ IF 0 = 1 THEN FALSE ELSE (CASE ) = "cs0" @!!BEGIN @!!type:obligation @!!id:14 @!!loc:173:13:173:15 @!!status:failed @!!prover:smt3 @!!meth:time-limit: 5 @!!reason:SMT backend: wrong conclusion @!!already:false @!!obl: ASSUME NEW VARIABLE flag, NEW VARIABLE turn, NEW VARIABLE pc, flag = [p \in Procs |-> FALSE], turn = 0, pc = [self \in {0} \union {1} |-> CASE self = 0 -> "ncs0" [] self = 1 -> "ncs1"] PROVE pc[0] \in {"ncs0", "e0a", "e0b", "e0c", "cs0"} ----- Interestingly, the second arm of the CASE doesn't throw the exception. -------------------------- MODULE PetersonTwoProcs -------------------------- EXTENDS TLC, TLAPS Procs == {0,1} (* --algorithm PetersonTwoProcs { variables flag = [p \in Procs |-> FALSE], turn = 0; process (p0 = 0) { ncs0: while (TRUE) { skip; e0a: flag[0] := TRUE; e0b: turn := 1; e0c: await ~(flag[1] /\ turn = 1); cs0: skip; flag[0] := FALSE; } } process (p1 = 1) { ncs1: while (TRUE) { skip; e1a: flag[1] := TRUE; e1b: turn := 0; e1c: await ~(flag[0] = TRUE /\ turn = 0); cs1: skip; flag[1] := FALSE; } } } \* end algorithm *) \* BEGIN TRANSLATION VARIABLES flag, turn, pc vars == << flag, turn, pc >> ProcSet == {0} \cup {1} Init == (* Global variables *) /\ flag = [p \in Procs |-> FALSE] /\ turn = 0 /\ pc = [self \in ProcSet |-> CASE self = 0 -> "ncs0" [] self = 1 -> "ncs1"] (* Manual re-write of last conjunct above, to work with proofs: /\ pc = [self \in ProcSet |-> IF self = 0 THEN "ncs0" ELSE "ncs1"] *) ncs0 == /\ pc[0] = "ncs0" /\ TRUE /\ pc' = [pc EXCEPT ![0] = "e0a"] /\ UNCHANGED << flag, turn >> e0a == /\ pc[0] = "e0a" /\ flag' = [flag EXCEPT ![0] = TRUE] /\ pc' = [pc EXCEPT ![0] = "e0b"] /\ turn' = turn e0b == /\ pc[0] = "e0b" /\ turn' = 1 /\ pc' = [pc EXCEPT ![0] = "e0c"] /\ flag' = flag e0c == /\ pc[0] = "e0c" /\ ~(flag[1] /\ turn = 1) /\ pc' = [pc EXCEPT ![0] = "cs0"] /\ UNCHANGED << flag, turn >> cs0 == /\ pc[0] = "cs0" /\ TRUE /\ flag' = [flag EXCEPT ![0] = FALSE] /\ pc' = [pc EXCEPT ![0] = "ncs0"] /\ turn' = turn p0 == ncs0 \/ e0a \/ e0b \/ e0c \/ cs0 ncs1 == /\ pc[1] = "ncs1" /\ TRUE /\ pc' = [pc EXCEPT ![1] = "e1a"] /\ UNCHANGED << flag, turn >> e1a == /\ pc[1] = "e1a" /\ flag' = [flag EXCEPT ![1] = TRUE] /\ pc' = [pc EXCEPT ![1] = "e1b"] /\ turn' = turn e1b == /\ pc[1] = "e1b" /\ turn' = 0 /\ pc' = [pc EXCEPT ![1] = "e1c"] /\ flag' = flag e1c == /\ pc[1] = "e1c" /\ ~(flag[0] = TRUE /\ turn = 0) /\ pc' = [pc EXCEPT ![1] = "cs1"] /\ UNCHANGED << flag, turn >> cs1 == /\ pc[1] = "cs1" /\ TRUE /\ flag' = [flag EXCEPT ![1] = FALSE] /\ pc' = [pc EXCEPT ![1] = "ncs1"] /\ turn' = turn p1 == ncs1 \/ e1a \/ e1b \/ e1c \/ cs1 Next == p0 \/ p1 Spec == Init /\ [][Next]_vars \* END TRANSLATION InCS(i) == pc[i] = "cs" p0Labels == {"ncs0", "e0a", "e0b", "e0c", "cs0"} p1Labels == {"ncs1", "e1a", "e1b", "e1c", "cs1"} TypeInv == /\ flag \in [Procs -> BOOLEAN] /\ turn \in Procs /\ pc \in [ProcSet -> p0Labels \union p1Labels] /\ pc[0] \in p0Labels /\ pc[1] \in p1Labels MutexInv == ~(InCS(0) /\ InCS(1)) \* Not yet inductive InductiveInv == /\ TypeInv /\ MutexInv USE DEF ProcSet Range(f) == {f[x] : x \in DOMAIN f} THEOREM Spec => []MutexInv <1>1. Init => InductiveInv (* If I change the definition of Init generated by PlusCal to /\ pc = [self \in ProcSet |-> IF self = 0 THEN "ncs0" ELSE "ncs1"] then this leaf-proof works: BY Z3 DEF Init, InductiveInv, TypeInv, Procs, p0Labels, p1Labels, MutexInv, InCS or the following proof also works: *) <2> SUFFICES ASSUME Init PROVE InductiveInv OBVIOUS <2>1. TypeInv <3>1. flag \in [Procs -> BOOLEAN] BY DEF Init, Procs \** SMT works <3>2. turn \in Procs BY DEF Init, Procs \** SMT works <3>3. pc \in [ProcSet -> p0Labels \union p1Labels] BY DEF Init, p0Labels, p1Labels \** SMT fails (* <4>1. DOMAIN pc = ProcSet BY Z3 DEF Init, p0Labels, p1Labels <4>2. Range(pc) = {"ncs0", "ncs1"} BY Z3 DEF Init, Range <4>3. {"ncs0", "ncs1"} \subseteq p0Labels \union p1Labels BY DEF p0Labels, p1Labels <4> QED BY Z3, <4>1, <4>2, <4>3 DEF Init, Range, p0Labels, p1Labels *) <3>4. pc[0] \in p0Labels BY DEF Init, p0Labels \** SMT fails <3>5. pc[1] \in p1Labels BY DEF Init, p1Labels \** SMT works (?!) <3>6. QED BY <3>1, <3>2, <3>3, <3>4, <3>5 DEF TypeInv <2>2. MutexInv BY Z3 DEF Init, InductiveInv, TypeInv, Procs, p0Labels, p1Labels, MutexInv, InCS <2>3. QED BY <2>1, <2>2 DEF InductiveInv <1>2. InductiveInv /\ [Next]_vars => InductiveInv' <1>3. InductiveInv => MutexInv BY DEF InductiveInv, MutexInv <1> QED OMITTED \* BY <1>1, <1>2, <1>3 and rule INV1 of TLA ============================================================================= Hi Hernán, Per Stephan's request, I re-assign this bug to you as well. In case you think that the problem is in the tlapm part and not in the smt-backend part, please re-assign it to me. |
Summary: | Pressing cancel in the toolbox does not interrupt the SMT backend | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | hernan.vanzetto, lamport, Stephan.Merz |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
|
Summary: | An improvement to the Visitor pattern | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | damien.doligez, lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Right now the map Visitor visits every node and in order to override we must override the visiting function (expr). It is less powerful but safer to separate the visiting from the creation of the expressions so we will need to override only the creation of the specific element (EXCEPT in this case). This can be achieved by either: 1) supplying the visitor with a factory method for expressions which overrides a default factory method that creates the expressions without any action. 2) calling a specific create (i.e. create_except) after traversing the arguments of the expr. Then we need to override only this method in order to normalize the expression. |
Summary: | Module dependencies not resolved correctly for external modules with standard modules names | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When tlapm loads a module which depends on another local modules, whose name is the same as a standard module, the local modules is not being loaded and its members are not inserted into the main module. now external modules are loaded even if they have the same name as a standard module. there remains a small problem with error propagation as I am using an exception for the workflow but exceptions are also handled locally and therefore an error massage will be printed. the fix was committed and I will make some patch for the error massage Hi Leslie, It is not that trivial to remove the error message as it is being printed inside a signature method and I dont want to change the signature (I am not sure who is using it). If you approve the bug is corrected, I will close this bug and add another one for the printed error message of which I will consult with Damien. btw, I have added unit tests for confirming that I have fixed the bug so we can skip the approval step if you prefer (for now and for future bugs) m_save mli changed so load_module function, which is not called outside of m_save, is removed. The error message could be fixed now |
Summary: | tlapm hanging | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Running the prover on the nonsense theorem on line 21 causes tlapm to loop and not respond to kill requests. The console output is below. This is not a problem of interacting with the Toolbox. It hangs when run from the command line. ---------------- New Prover Launch -------------- warning: --isaprove is deprecated (* TLAPM version 1.1.4 (commit 30325) *) (* launched at 2013-01-25 00:06:40 with command line: *) (* /usr/local/bin/tlapm --toolbox 21 33 --isaprove --cleanfp -I C:\lamport\tla\newtools\tlapm\library\ C:\lamport\mytemp\Test.tla *) (* fingerprints file "Test.tlaps/fingerprints" removed *) @!!BEGIN @!!type:obligation @!!id:1 @!!loc:33:5:33:7 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:2 @!!loc:33:8:33:12 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:3 @!!loc:33:14:33:18 @!!status:to be proved @!!END @!!BEGIN @!!type:obligation @!!id:4 @!!loc:25:5:25:7 @!!status:to be proved @!!END @!!BEGIN @!!type:obligationsnumber @!!count:4 @!!END Comment by Leslie: So far, I’ve only seen this bug when using numbers as formulas—something that’s not going to be very common. It’s worth examining only to see if it can cause hanging in more reasonable cases. |
Summary: | TLAPM returns error code 0 also when not all theorems are successfully proven | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED INVALID | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
is this the intended behaviour? Should it return a specific error code in this case and reserve error code 0 for a fully successful execution? Dan Ricketts points out that the documentation for the tlapm/Toolbox interface says that tlapm can return the following completion codes: 0 - successful completion 1 - error of the pm. Normally a module parsing error. 2 - problem reading command line arguments 255 - tlapm interrupted |
Summary: | Can't cancel status checking | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Hitting cancel on the Status Checking Launch dialog does nothing when running a status check. |
Summary: | tlapm reports a bug with error code -1073741819 | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | File SetEuclid.tla |
Created attachment 192 [details] File SetEuclid.tla Running the prover on step <1>2 on lines 253 of the attached file produces: Error running tlapm. Report a bug with the error code to the developers at http://bugzilla.tlaplus.net/. Error code: -1073741819 |
Summary: | tlapm typo in definition of IsFiniteSet | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | damien.doligez, lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The tlapm typo in the definition of IsFiniteSet is still not fixed. I am using TLAPM version 1.1.4 (commit 30325). Try proving: EXTENDS Naturals, Sequences, FiniteSets THEOREM IsFiniteSetDef == \A S : IsFiniteSet(S) = \E seq \in Seq(S) : \A s \in S : \E n \in 1..Len(seq) : seq[n] = s BY DEF IsFiniteSet See the attached TLA file and console log. I originally reported this problem on June 4, 2012. |
Summary: | instance of a module that extends TLAPS confounds tlapm with SMTT(10) | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Damien Doligez <damien.doligez> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport, tomer.libal |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
I have a module (SubMod.tla attached) that extends TLAPS and contains some definitions and proofs. I have a module (BugInstanceTlaps.tla attached) that takes an instance of SubMod and then also contains some definitions and proofs. This module also extends TLAPS, because I want to reference some of the tlapm pragmas in its proofs. In fact, I want to instruct tlapm to appeal to SMT with a timeout of 10 seconds. So for this purpose I write SMTT(10) in the BY clause on the relevant deduction. Unfortunately, it seems that tlapm gets confused about this. See the attached console log. It seems that tlapm fails to realize that SMTT(10) is a pragma. In this particular case, I do not actually need the timeout, so I can just write SMT and tlapm will do the correct thing. However, I have extracted this example from a much more complicated situation in which I have found that SMT occasionally needs the extra time, so I have gotten into the habit of always writing SMTT(10). And, of course, the SMTT(10) pragma should work, anyway. fixed in revision 31051 should add a regression test Fixed in revision 31051. |
Summary: | tlapm parser failure on instance with operator substitution | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | damien.doligez, lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
I have a module that takes a couple of constant parameters: --------------------------- MODULE PartialOrders --------------------------- CONSTANT S CONSTANT _ \preceq _ IsPartialOrder == /\ \A a,b \in S : (a \preceq b) \in BOOLEAN /\ \A a \in S : a \preceq a /\ \A a,b \in S : a \preceq b /\ b \preceq a => a = b /\ \A a,b,c \in S : a \preceq b /\ b \preceq c => a \preceq c ============================================================================= And I have a module that takes an instance of that module: --------------------------- MODULE BugInstanceOp --------------------------- EXTENDS Integers, TLAPS INSTANCE PartialOrders WITH S <- Int, \preceq <- \leq THEOREM IsPartialOrder BY SMT ============================================================================= This is all proper TLA+ according to the tool box. However, when I ask tlapm to prove the theorem, it blows up with a parse error: File "<unknown>":Error: Could not parse "C:\\Users\\tomr\\Documents\\All Projects\\TLAPS Bugs\\BugInstanceOp\\BugInstanceOp.tla" successfully. tlapm ending abnormally with Failure("Module.Parser.parse_file") Raised at file "pervasives.ml", line 22, characters 22-33 Called from file "m_save.ml", line 24, characters 16-20 Called from file "tlapm.ml", line 300, characters 19-92 Called from file "list.ml", line 74, characters 24-34 Called from file "tlapm.ml", line 298, characters 4-373 Called from file "tlapm.ml", line 334, characters 8-33 It would appear that the tlapm parser is confused by the operator substitution in the instance statement. See attached TLA files and console log. If this is supposed to be an unsupported language feature it is not documented on http://msr-inria.inria.fr/~doligez/tlaps/content/Download/Unsupported.html fixed in revision 31237. |
Summary: | Silly application of '/' (division operator), e.g. to sets, should ideally cause TLC to report an error | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | TLC Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | lamport, simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
(I'm running on Windows 7 64-bit, using 32-bit Sun Java 6 update 45, and the Win32 build of the latest toolbox release (1.4.6) -- and I also tried an older version.) While writing a spec, I accidentally mis-typed the set-difference operator. I wrote ‘/’ instead of ‘\’, in a context similar to the following: { "a", "b", "c" } / {"b"} TLC accepted that. I got strange very results when model-checking. TLC evaluates the above expression as: {{"b"}, {"b", "c", "a"}} I then realized that TLC was only accepting the above because my spec uses “EXTENDS Reals” because I need the definition of Infinity. I had forgotten that the Reals module also defines ‘/’ as the division operator, because I’ve never used division in a spec. (IIRC TLC doesn't support reals.) I understand that this behavior is consistent with the untyped semantics of TLA+[*]. But it would be nice if TLC reported this usage as an error. Cheers, Chris [*] Page 347 of ‘Specifying Systems’ says that the Reals module contains this definition for '/' : a / b == CHOOSE c \in Real : a = b * c So that can evaluate to any arbitrary value, for the erroneous usage earlier. Here is the explanation of the bug. The official standard modules Naturals, Integers, and Reals given in "Specifying Systems" define the semantics of the arithmetic operators, but they are of no use to any tool. So, to speed up parsing, dummy versions of those modules are used by the parser. The dummy versions of Naturals and Integers are ignored by TLC and TLAPS. However, the dummy version of Reals is used by TLC and I presume by TLAPS. The body of that module is: EXTENDS Integers Real == { } a / b == {a, b} Infinity == 999999999 The question is, what should the definitions be. It's easy to make up definitions that will cause errors when TLC tries to evaluate these definitions. However, can we do anything that will make this module usable by TLAPS? I don't see how, since I think we should maintain the semantics that Int is a subset of Real and the arithemetic operators like + and * on integers are the restrictions of the ones on reals. But I'm open to suggestions. We can make TLC produce appropriate error messages when the Reals operators are used without the use of a suitable dummy Reals module: we can write a Java Reals class for TLC that overrides these definitions. I'm not going to do that myself, but I'll be happy to consider adding such a module if someone else wants to write it. (It should be easy to figure out how it's done by searching the source code for the Naturals.java and Integers.java classes.) Barring other suggestions, I will modify the dummy Reals module. I welcome suggestions for what I should do. For example, should we keep the current definition of Infinity? Should I change the definition of Real so that TLC will always produce an error in evaluating exp \in Real? Or should it evaluate -3 \in Real to TRUE? I'll move discussion of this to the Google group. |
Summary: | tlapm bug in printing obligations | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When printing obligations, tlapm seems to think that + has higher precedence than % , so it prints 0 + 1 % N = 1 However, that’s not a legal TLA+ expression, since TLA+ defines + and % to have overlapping precedences, so parentheses are required. |
Summary: | Failure to report an error | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Leslie wrote: When I tell TLAPS to prove the bogus WITNESS step in THEOREM \E i \in {1, 2, 3} : TRUE <1> WITNESS 2 <1> QED I find this in the log (* TLAPM version 1.1.5 (commit 31536) *) (* launched at 2013-05-02 20:17:12 with command line: *) (* /usr/local/bin/tlapm --toolbox 11 13 --isaprove -I C:\lamport\tla\newtools\tlapm\library\ C:\lamport\mytemp\Test1.tla *) File "C:\\lamport\\mytemp\\Test1.tla", line 12, characters 1-13: Error: WITNESS argument 2 does not match pattern i \in {1, 2, 3} However, the Toolbox doesn’t raise an error window. My guess is that TLAPM is not returning the error report in the right format. Please check on that. |
Summary: | make standard modules visible to the PM | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Stephan Merz <stephan.merz> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
When attempting to prove the following theorem in a module extending the Sequences module THEOREM ConcatDef == \A s1, s2 : s1 \o s2 = [i \in 1..(Len(s1)+Len(s2)) |-> IF i \leq Len(s1) THEN s1[i] ELSE s2[i-Len(s1)]] BY DEF \o the definition of \o is not expanded because the definitions given in standard modules are not available to the PM. I suggest that this be changed, perhaps excluding the modules for Naturals, Integers, and Reals whose definitions are arguably not useful in a proof. Current workaround: add theorems like the above that basically restate the definitions, omit their proofs, and work from there. It appears that the standard modules distributed with the Toolbox have always been the real ones, except for the numbers modules Naturals, Integers, and Reals. (They must have been put in the standalone distribution when the Toolbox was first released, if they weren't already there.) Moreover, there is no Sequences.tla file in the tlapm repository. It appears that Sequences is one of the modules that are built into the tlapm code, with bogus definitions. We need to check if Bags and FiniteSets are there as well. Is fixed in the source and will fix will appear in the next release. |
Summary: | Toolbox not displaying error report by TLC | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLC Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | Specification SimpleLiveness |
Created attachment 193 [details]
Specification SimpleLiveness
The spec that I will attach as soon as Bugzilla allows me to has a bad Behavior
Spec, with [Next]_vars instead of [][Next]_vars. Therefore, TLC reports an
error when it is run. However, there seem to be two Toolbox bugs:
1. Instead of recognizing it as an error, the Toolbox thinks there's a bug.
2. The Toolbox displays neither the error nor the bug report to the user.
This bug is in the inscrutable code for parsing TLC errors, so it may be hard
to fix.
A fix to the SANY parser makes the example no longer parse. However, I believe it was a manifestation of a bug that was fixed in the version of the code checked in on 23 October 2013. |
Summary: | Sometimes 'create pdf version' command fails to produce new version of pdf file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | TLATEX Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | simon |
Priority: | P4 | ||
Version: | unspecified | ||
Hardware: | x86 64-bit | ||
OS: | Windows 7 | ||
Target Version: | --- | ||
Attachments: |
Suffix PDF file name with timestamp to make it unique
mylyn/context/zip |
The following behavior sometimes occurs: When running with "Use built-in PDF viewer" preference, I have to delete the pdf viewer window in order to create a new pdf version. If I don't, when running under the debugger, the console log reports org.eclipse.core.internal.resources.ResourceException: Resource '/SimpleSpec/SimpleSpecTrans.pdf' does not exist. at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:320) at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:194) at org.eclipse.core.internal.resources.Resource.checkAccessibleAndLocal(Resource.java:200) at org.eclipse.core.internal.resources.Resource.touch(Resource.java:1901) at org.lamport.tla.toolbox.tool.tla2tex.handler.EmbeddedPDFViewerRunnable.setFile(EmbeddedPDFViewerRunnable.java:48) at org.lamport.tla.toolbox.tool.tla2tex.handler.ProducePDFHandler$2.runInWorkspace(ProducePDFHandler.java:270) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) If I close the spec and close and reopen the Toolbox, and bow three times to Mecca, the problem goes away. I presume this is the result of an Eclipse feature. (Since there is no documentation explaining what Eclipse methods are supposed to do, there are no bugs in Eclipse.) Hi Leslie, to narrow it down. Might it be somehow possible that you trigger two concurrent PDF generator jobs? The generator job is visible to the user. Leslie, try adding "+ System.currentTimeMillis()" to org.lamport.tla.toolbox.tool.tla2tex.handler.ProducePDFHandler on line 265 where it concats the filename to make the filename unique for each job. Hi Leslie, please check if my commit [1] fixes the problem for you. It forces an Eclipse project resource refresh after creating the PDF file. My assumption is that the filesystem and what Eclipse sees in its project is out of sync due to the fact that the PDF does not get created through the Eclipse resource layer. [1] https://tlaplus.codeplex.com/SourceControl/changeset/fa2b69324b226e7aa2589863d8c0bbfdbbc8384b PS: Suffixing the PDF filename with a timestamp has the side effect that the built-in PDF viewer open a view for each file and does not reuse the old one. Created attachment 194 [details]
Suffix PDF file name with timestamp to make it unique
(just for the sake of completeness - not intended to be committed)
Created attachment 195 [details]
mylyn/context/zip
I haven't seen this bug since Markus's fix, so I will declare it resolved. |
Summary: | Sometimes Toolbox does not show TLC errors arising from 'Evaluate Constant Expression' | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Chris Newcombe <chris.newcombe> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | major | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
(This is not terribly serious as there is a workaround, but it's clearly a bug so I'm reporting it anyway.) I found a case in which the Toolbox does not show an error that is reported by TLC when doing ‘Evaluate Constant Expression’. I suspect this is related to the size of the error-output in the TLC console log. The attached module contains a dumb bug; on line 52 the definition of the co-domain of a recursive function is too small. When I use TLC to ‘Evaluate Constant Expression’ on the following: TestAllShortestDistances then a. If the following values are used for constants, then the Toolbox fails to report the error, and does not print any output in “Value” box. MaxNumEdgeWeights = 1 MaxNumNodes = 3 b. If the following smaller values are used for constants, then the Toolbox correctly reports the error. MaxNumEdgeWeights = 1 MaxNumNodes = 2 In both cases, the TLC console log does contain the correct error. I suspect this problem is related to the size of the error output in the log, as in case (a) above, the error report in the TLC console log is quite large, due to the combinatorics of this function definition. In the extract from the log below, the “… snip lots of output ..” part hides the large part. Version info Windows 7 Enterprise OS is 64-bit, but software is 32-bit. 32-bit Oracle Java 1.7: java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b16) Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode) 32-bit Toolbox & TLC (TLAToolbox-1.4.7-win32.win32.x86) This is Version 1.4.7 of 24 April 2013 and includes: - SANY Version 2.1 of 27 March 2013 - TLC Version 2.05 of 24 October 2012 - PlusCal Version 1.8 of 2 April 2013 - TLATeX Version 1.0 of 12 April 2013 Chris Starting... (2013-07-14 08:56:53) @!@!@ENDMSG 2185 @!@!@ @!@!@STARTMSG 2105:1 @!@!@ Evaluating assumption line 20, col 8 to line 20, col 66 of module MC failed. In applying the function [args \in ({(<<1, 1>> :> 1 @@ ... snip lots of output ...} X {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}) |-> <expression line 53, col 13 to line 66, col 62 of module ToolboxBug_FailureToReportErrorEvaluatingConstantExpression>], the first argument is: << ( <<1, 1>> :> 999999999 @@ <<1, 2>> :> 1 @@ <<1, 3>> :> 999999999 @@ <<2, 1>> :> 1 @@ <<2, 2>> :> 2 @@ <<2, 3>> :> 999999999 @@ <<3, 1>> :> 999999999 @@ <<3, 2>> :> 999999999 @@ <<3, 3>> :> 999999999 ), {2, 3} >> which is not in its domain. |
Summary: | Soundness bug due to coagulation or primes ignoring bound variables | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | damien.doligez, lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
The following can be proved in the toolbox: VARIABLE Y P(a,x) == IF Y THEN x ELSE x THEOREM 1 = 2 <1>1. \A z : P(Y,z)' = z BY DEF P <1>2. QED BY <1>1 The primes distribution does not distribute the primes over P(Y,z)' as Y is not constant. The backends of Isabelle and zenon, when encountering primes, are doing coagulation as follows: Given op(args)' - if args are empty, return hash(op) - if all args are constants, return hash(op)(args) - if at least one arg is not a constant, return hash(op(args)) the result is that if some arg is a bound variable, as in the above example, we get a coagulation based on the bound variable name. Fixing the bug is expected to take at most one week. For now I have added a test for this bug in the soundness_tests. a minor correction The primes distribution does not distribute the primes over P(Y,z)' as P is not constant. steps to do: 1) remove prime handling from backends and add it to an action backend. isabelle/zenon/SMT/etc. should report an errror if encountering primes 2) remove prime distribution from backends and add it to action backend. the action backend is a default middle-backend to normalize formulas when we send the obligation to a fol theorem prover. 3) in the action backend, we do as follows: 3a) expend definitions of UNCHANGED, [A]_v and <<A>>_v 3b) distribute primes over constant operators 3c) for a leibniz non-constant operator op, distribute primes over hash(op) (we treat all non-constant operators right now, see comment below) 3d) primed atoms: constant atoms -> do nothing, else 3e) coalesce all non-leibniz operators and primed non-leibniz operators (postponed, see comment below). comment: this will be done only after we integrate the SANY parser to TLAPM as we dont have the leibnizicy information right now in TLAPM. 3d) primed atoms a: constant atoms -> a, else -> hash(a) (make sure hashing a variable name does not cause problems to backends due to naming conventions) fixed except the comment. I will add another issue for dealing with that. |
Summary: | TLAPM doesnt handle multiple except expressions correctly | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | major | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- |
Leslie, Stephan, Damien, I have encountered an error in the TLAPS interpretation of the EXCEPT AT construct. Namely, when you have a construct with multiple exceptions, each with an @: [A EXCEPT ![x] = @+1, ![x] = @+2] Please refer to page 304 in Specifying Systems. A multi-EXCEPT is interpreted as a recursive structure of single-EXCEPTs: [[A EXCEPT ![x] = @+1] EXCEPT ![x] = @+2] And then to interpret the @ in the context of each single-EXCEPT you interpolate a local definition: LET B == LET @ == A[x] IN [A EXCEPT ![x] = @+1] IN LET @ == B[x] IN [B EXCEPT ![x] = @+2] In other words, each @ reflects whatever changes might have happened to its component by any previously-applied exception clauses. But that is not how TLAPS interprets the EXCEPT AT construct. TLAPS thinks that each @ refers to its component in the original function. I am using TLAPM version 1.1.5 (commit 31530) See for example the following module (ZIP attached): ------------------------------- MODULE BugAt ------------------------------- EXTENDS Naturals, TLC, TLAPS VARIABLE A Init == A = [i \in {0} |-> 0] Next == IF A[0] = 0 THEN A' = [A EXCEPT ![0] = @+1, ![0] = @+2] ELSE A' = A Inv == /\ A \in [{0} -> Nat] /\ A[0] # 3 THEOREM ThmInit == Init => Inv BY SMT DEF Init, Inv THEOREM ThmNext == Inv /\ Next => Inv' BY SMT DEF Inv, Next ============================================================================= TLAPS happily proves both of the theorems. Taken together, these theorems imply that Inv is an invariant of the specification. However, running the model checker quickly shows that the invariant is violated after the first action. -Tom Rodeheffer |
Summary: | go over all regressions tests in attached file | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Attachments: | regerssiin tests |
and add them to the respective testing units: - expression normalization (EXCEPT, etc.) -> unit tests - soundness bugs -> soundness tests - regression tests -> regression tests - others -< try first unit tests Created attachment 196 [details]
regerssiin tests
|
Summary: | Integrate the SANY parser to TLAPM | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | |||
Bug Blocks: | 323 |
- work has already started. Create a branch and add all changes made to the branch. TLAPM should use the java SANY parser in order to parser TLA specs. SANY already exports its data in an XML stream. TLAPM should call the SANY exporter jar correctly and parse the output XML. |
Summary: | finish the Action frontend | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tomer <tomer.libal> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | normal | CC: | lamport |
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Target Version: | --- | ||
Bug Depends on: | 322 | ||
Bug Blocks: |
all steps below were done except those with the comment 1) remove prime handling from backends and add it to an action backend. isabelle/zenon/SMT/etc. should report an errror if encountering primes 2) remove prime distribution from backends and add it to action backend. the action backend is a default middle-backend to normalize formulas when we send the obligation to a fol theorem prover. 3) in the action backend, we do as follows: 3a) expend definitions of UNCHANGED, [A]_v and <<A>>_v 3b) distribute primes over constant operators 3c) for a leibniz non-constant operator op, distribute primes over hash(op) (we treat all non-constant operators right now, see comment below) 3d) primed atoms: constant atoms -> do nothing, else 3e) coalesce all non-leibniz operators and primed non-leibniz operators (postponed, see comment below). comment: this will be done only after we integrate the SANY parser to TLAPM as we dont have the leibnizicy information right now in TLAPM. |
Summary: | show uses fails to check inside labeled sub-expression | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Tom Rodeheffer <tomr> |
Component: | TLA+ Editor | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | simon |
Priority: | P3 | ||
Version: | 1.4 | ||
Hardware: | x86 64-bit | ||
OS: | Windows | ||
Target Version: | --- | ||
Attachments: | TLA file illustrating the bug |
Created attachment 197 [details]
TLA file illustrating the bug
I am using version 1.4.7 of the TLA+ Toolbox.
If I have a symbol whose only use is inside a labeled sub-expression, the
editor "Show Uses" command says that the symbol has no uses.
This was caused by a simple bug and will be fixed in the next release. Thanks for the report. |
Summary: | The Toolbox knows what file you REALLY want. | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Leslie Lamport <lamport> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | ASSIGNED --- | ||
Severity: | normal | ||
Priority: | P3 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Windows 7 | ||
Target Version: | --- |
I have two versions of a spec file with the same name in two different directories. I opened one of them in the Toolbox. I closed it and told the Toolbox to Forget the spec. I then opened the other one. The Spec explorer said that the spec's root file was in the new (correct) directory. However, the file opened in the editor is the old (incorrect) one. Restarting the Toolbox didn't fix the problem. Re-installing the Toolbox would probably make it forget about the original file (although Eclipse works very hard to cache things, so I will not go out on a limb to say that it will). Short of that, opening the new file under a new spec name seemed to be the only way to solve the problem. I did the essentially the same thing on a different machine and this did not happen. I don't expect anyone to read the 10^7 lines of Eclipse code required to figure ot what happened. I am just filing this bug report to document the problem. |
Summary: | Toolbox crashes with a dump | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | RWShore <rwsmob> |
Component: | Core Component | Assignee: | Leslie Lamport <lamport> |
Status: | RESOLVED WONTFIX | ||
Severity: | blocker | CC: | bugzilla.tlaplus.net |
Priority: | P5 | ||
Version: | 1.4.2 | ||
Hardware: | x86 64-bit | ||
OS: | Linux | ||
Target Version: | --- |
UNAME: Linux sherpa-rws 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10 20:06:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux This is a desktop VM running in the Azure cloud. The "toolbox" command shows the splash screen and then a crash (hs_err*.log attached). STDOUT/ERR contains the following: $ ./toolbox # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f6eb8e1c2a1, pid=6033, tid=140115494958848 # # JRE version: Java(TM) SE Runtime Environment (7.0_75-b13) (build 1.7.0_75-b13) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libsoup-2.4.so.1+0x6c2a1] soup_session_feature_detach+0x11 # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # An error report file with more information is saved as: # /data/extra/rwshore/TLA/toolbox/hs_err_pid6033.log # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # NOTE: this is a headless VM (no GPU or "real" graphics adapter). I'm accessing it in graphics mode via an RDP connection, which actually runs VNC under the covers. Other IDEs, including J2EE Eclipse, NetBeans, and Android Studio run fine in this environment. However, given where Java reports the crash, I suspect that the lack of a graphics adapter is the underlying problem Hi, this is a known problem [1][2] with the Toolbox's underlying Eclipse foundation. Please either add "-Dorg.eclipse.swt.browser.DefaultType=mozilla" to toolbox.ini (at the end of the file) or use the (soon to be released) Toolbox nightly build [3]. I suggest to do use the nightly. Thanks Markus [1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=404776 [2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=405786 [3] http://tla.msr-inria.inria.fr/tlatoolbox/ci/products/ |
Summary: | Incorrect assertion proved | ||
---|---|---|---|
Product: | TLA+ Toolbox | Reporter: | Saksham Chand <schand> |
Component: | TLAPS | Assignee: | Tomer <tomer.libal> |
Status: | NEW --- | ||
Severity: | enhancement | CC: | lamport |
Priority: | P5 | ||
Version: | 1.5 | ||
Hardware: | Other | ||
OS: | Windows | ||
Target Version: | --- |
TLA can verify: <4>21. \A x, y \in Nat \cup {-1} : x > y => x..y = {} However it also proves the following: Ballots == Nat <4> DEFINE mm == [type |-> "1b", bal |-> m.bal, voted |-> acceptorVoted[a], from |-> a] <4>9. \A s \in Slots : MaxVotedBallotInSlot(mm.voted, s)+1 \in Ballots . . . <4>13. \A s \in Slots, c \in Ballots : c \in MaxVotedBallotInSlot(mm.voted, s)+1..mm.bal-1 => c > MaxVotedBallotInSlot(mm.voted, s) <5> SUFFICES ASSUME NEW s \in Slots, NEW c \in Ballots, c \in MaxVotedBallotInSlot(mm.voted, s)+1..mm.bal-1 PROVE c > MaxVotedBallotInSlot(mm.voted, s) OBVIOUS <5>1. CASE MaxVotedBallotInSlot(mm.voted, s)+1 > mm.bal-1 <6>0. mm.bal \in Ballots <6>1. MaxVotedBallotInSlot(mm.voted, s)+1..mm.bal-1 # {} BY <5>1, <6>0, <4>9, <4>21 <6> QED BY <5>1 <5>2. CASE MaxVotedBallotInSlot(mm.voted, s)+1 = mm.bal-1 <6>1. c = MaxVotedBallotInSlot(mm.voted, s)+1 BY <4>9, <5>2 <6> QED BY <6>1, <4>11, <4>7 <5>3. CASE MaxVotedBallotInSlot(mm.voted, s)+1 < mm.bal-1 <5> QED BY <5>1, <5>2, <5>3 And <6>1 passes through TLAPS. This I don't understand. PFA full proof. |