Bug 2

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 ComponentAssignee: 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
Something can be added to the Results Page to indicate if the spec has changed since the last run of the model.  More difficult is figuring out a nice, simple interface to allow the user to look at the saved, read-only version of the spec files on which the model was run.  One possibility is to add to the Spec explorer an extra level to list, for each model, any modules that have changed since the model was last run.  Clicking on the module name would raise a read-lonly module editor on that module--with something in the tab indicating which model the module was saved for.

(Items 1 and 67 from todo.txt)
Comment 1 Simon Zambrovski 2009-11-18 13:38:27 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.
Comment 2 Dan Ricketts 2009-11-18 15:09:36 UTC
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.
Comment 3 Leslie Lamport 2009-11-19 02:56:39 UTC
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.
Comment 4 Leslie Lamport 2010-01-26 12:05:52 UTC
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.
Comment 5 Dan Ricketts 2010-06-15 12:08:53 UTC
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.

Bug 3

Summary: Add reporting of fingerprint collision probability
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement    
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-11-18 13:56:34 UTC
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

Bug 4

Summary: Cannot get the default VM install on Mac OS to run TLC
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Simon Zambrovski <simon>
Status: RESOLVED FIXED    
Severity: blocker CC: simon
Priority: P1    
Version: unspecified   
Hardware: x86 32-bit   
OS: Mac OS   
Target Version: ---

Description Dan Ricketts 2009-11-19 13:24:59 UTC
In TLCProcessJob, the method JavaRuntime.getDefaultVMInstall() returns null on Mac OS. A non-null value is required to run TLC.
Comment 1 Simon Zambrovski 2009-11-27 22:51:38 UTC
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
Comment 2 Simon Zambrovski 2009-11-27 23:01:00 UTC
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
Comment 3 Simon Zambrovski 2009-11-27 23:02:23 UTC
Another reference describing the same bug: http://www.eclipse.org/forums/index.php?t=msg&goto=495006&S=af54b9bdf2bc342a1f3154a501e149b5
Comment 4 Dan Ricketts 2009-11-28 16:13:07 UTC
I posted the message that you linked to in the last comment.
Comment 5 Simon Zambrovski 2009-12-16 16:36:20 UTC
Added the plugin dependency to 
org.eclipse.jdt.launching.macosx to enable Mac OSx support. Could 
someone try if it solved the problem?
Comment 6 Simon Zambrovski 2009-12-17 13:55:51 UTC
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.

Bug 5

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 HelpAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-11-19 15:01:30 UTC
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.
Comment 1 Dan Ricketts 2009-11-19 15:48:23 UTC
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.

Bug 6

Summary: The rename spec command does not behave properly
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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

Description Dan Ricketts 2009-11-19 16:09:23 UTC
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.
Comment 1 Dan Ricketts 2009-11-27 16:51:01 UTC
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.
Comment 2 Dan Ricketts 2009-11-27 16:51:03 UTC
Created attachment 2 [details]
mylyn/context/zip

Bug 7

Summary: Parsing errors in the MC file contain "Encountered ----" sometimes
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-11-25 15:09:36 UTC
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.
Comment 1 Leslie Lamport 2009-11-27 23:29:22 UTC
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.

Bug 8

Summary: Add module-editor line width preference
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2009-11-30 02:10:38 UTC
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".
Comment 1 Simon Zambrovski 2009-11-30 11:54:50 UTC
The preference renaming is moved to the separate Bug 9.
Comment 2 Simon Zambrovski 2009-11-30 12:02:26 UTC
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.

Bug 9

Summary: Rename Preference Pages
Product: TLA+ Toolbox Reporter: Simon Zambrovski <simon>
Component: Core ComponentAssignee: 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

Description Simon Zambrovski 2009-11-30 11:55:46 UTC
Rename the items under TLA+ Preferences to remove "Preferences" from
their names -- e.g., change "TLA+ Parser Preferences" to "TLA+ Parser".
Comment 1 Dan Ricketts 2009-12-10 12:53:42 UTC
Created attachment 3 [details]
mylyn/context/zip

Bug 10

Summary: Eclipse buttons don't work on Linux ubuntu 9.10
Product: TLA+ Toolbox Reporter: Simon Zambrovski <simon>
Component: Core ComponentAssignee: 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:    

Description Simon Zambrovski 2009-11-30 17:16:33 UTC
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)
Comment 1 Dan Ricketts 2009-12-04 17:22:57 UTC
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?
Comment 2 Dan Ricketts 2009-12-10 12:44:31 UTC
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.
Comment 3 Dan Ricketts 2010-02-02 15:12:20 UTC
The trace explorer buttons for Explore and Restore seem to be affected by this bug.
Comment 4 Markus Alexander Kuppe 2011-05-11 16:45:40 UTC
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
Comment 5 Markus Alexander Kuppe 2011-07-01 20:08:42 UTC
The new Maven/Tycho based build has upgraded the toolbox dependency to Eclipse 3.6, marking as fixed.

Bug 11

Summary: Add the notion of a model being locked
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-11-30 18:18:27 UTC
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.
Comment 1 Dan Ricketts 2009-12-02 17:57:10 UTC
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.
Comment 2 Leslie Lamport 2009-12-02 23:38:13 UTC
This sounds good.
Comment 3 Dan Ricketts 2009-12-07 11:23:17 UTC
Should the user be able to rename the model when it is locked?
Comment 4 Leslie Lamport 2009-12-07 19:14:44 UTC
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.)

Bug 12

Summary: Toolbox checking unselected behavior spec options.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2009-12-02 23:44:42 UTC
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.
Comment 1 Dan Ricketts 2009-12-03 00:10:14 UTC
I can't seem to reproduce this error. Can you send me the spec and model that caused this problem?
Comment 2 Dan Ricketts 2009-12-07 11:25:32 UTC
Since this does not seem to be reproducible, I'm marking it as worksforme.
Comment 3 Leslie Lamport 2009-12-21 02:39:24 UTC
Created attachment 4 [details]
a spec

see description
Comment 4 Leslie Lamport 2009-12-21 02:50:29 UTC
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.
Comment 5 Leslie Lamport 2009-12-21 16:01:12 UTC
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
Comment 6 Dan Ricketts 2010-01-27 15:40:14 UTC
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.

Bug 13

Summary: Trace exploration
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-12-07 11:22:48 UTC
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.
Comment 1 Dan Ricketts 2009-12-07 17:00:12 UTC
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.
Comment 2 Dan Ricketts 2009-12-07 17:30:49 UTC
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.
Comment 3 Dan Ricketts 2009-12-07 18:15:23 UTC
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?
Comment 4 Leslie Lamport 2009-12-07 19:57:57 UTC
   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.
Comment 5 Dan Ricketts 2010-01-27 11:43:23 UTC
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.

Bug 14

Summary: The column numbers do not appear in module editor
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2009-12-07 13:53:32 UTC
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.
Comment 1 Dan Ricketts 2010-01-29 13:13:01 UTC
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.

Bug 15

Summary: Rename or deleting root file outside toolbox produces incorrect editor page
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLA+ EditorAssignee: 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: ---

Description Dan Ricketts 2009-12-10 14:49:24 UTC
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."
Comment 1 Dan Ricketts 2009-12-10 14:50:02 UTC
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.
Comment 2 Dan Ricketts 2010-03-19 15:44:47 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-05-11 17:01:40 UTC
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)
Comment 4 Markus Alexander Kuppe 2011-05-11 17:02:38 UTC
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)

Bug 16

Summary: cygwin doesn't properly unzip the Windows executable
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2009-12-17 21:19:20 UTC
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"

Bug 17

Summary: tlatex translation not working?
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLATEX ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WORKSFORME    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2009-12-18 00:17:00 UTC
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.
Comment 1 Leslie Lamport 2009-12-23 19:48:21 UTC
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.

Bug 18

Summary: Modifying the Toolbox to handle pcal files.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA ToolsAssignee: 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    

Description Leslie Lamport 2009-12-18 00:28:08 UTC
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.
Comment 1 Leslie Lamport 2010-07-14 03:41:33 UTC
The plan for using pcal files has been abandoned, so this is moot.

Bug 19

Summary: Toolbox caches obsolete values on startup
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2009-12-23 01:47:07 UTC
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?
Comment 1 Markus Alexander Kuppe 2011-05-29 13:11:25 UTC
Created attachment 36 [details]
stack trace

Bug 20

Summary: Model editor incorrectly reports that TLC is running
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: 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

Description Dan Ricketts 2010-01-18 15:59:18 UTC
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.
Comment 1 Dan Ricketts 2010-01-18 16:00:12 UTC
Created attachment 5 [details]
Root module for spec
Comment 2 Dan Ricketts 2010-01-18 16:00:44 UTC
Created attachment 6 [details]
toolbox directory containing the only model

Bug 21

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 ComponentAssignee: 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: ---

Description Dan Ricketts 2010-01-18 16:05:16 UTC
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.
Comment 1 Dan Ricketts 2010-01-18 16:06:24 UTC
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.
Comment 2 Dan Ricketts 2010-01-25 14:11:34 UTC
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.
Comment 3 Dan Ricketts 2010-01-28 16:58:54 UTC
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.

Bug 22

Summary: Help does not work on Mac
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ Toolbox HelpAssignee: 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

Description Leslie Lamport 2010-01-21 01:44:23 UTC
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.)
Comment 1 Dan Ricketts 2010-01-25 14:41:45 UTC
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.
Comment 2 Dan Ricketts 2010-01-28 12:56:47 UTC
The Help menu now has a Dynamic Help item.
Comment 3 Dan Ricketts 2010-01-28 12:56:49 UTC
Created attachment 11 [details]
mylyn/context/zip

Bug 23

Summary: Minor fixes to the Trace Explorer Window
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2010-01-21 02:10:21 UTC
- 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.
Comment 1 Dan Ricketts 2010-01-22 13:19:36 UTC
Help button has been added.
Comment 2 Dan Ricketts 2010-01-22 17:46:42 UTC
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.
Comment 3 Dan Ricketts 2010-01-22 17:46:43 UTC
Created attachment 9 [details]
mylyn/context/zip

Bug 24

Summary: Parsing an unsaved file
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: 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

Description Leslie Lamport 2010-01-21 18:40:01 UTC
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".
Comment 1 Dan Ricketts 2010-01-25 10:38:52 UTC
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.
Comment 2 Dan Ricketts 2010-01-25 10:41:50 UTC
In the dialog that asks if you want to save the modified resources, clicking "No" has the same effect as clicking "Yes".
Comment 3 Dan Ricketts 2010-01-25 12:28:50 UTC
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".
Comment 4 Dan Ricketts 2010-01-26 11:28:29 UTC
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.
Comment 5 Dan Ricketts 2010-01-26 11:28:31 UTC
Created attachment 10 [details]
mylyn/context/zip

Bug 25

Summary: Minor problem with value display in TLC Error Trace view
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2010-01-22 00:58:20 UTC
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.
Comment 1 Dan Ricketts 2010-01-22 13:52:58 UTC
Created attachment 8 [details]
mylyn/context/zip

Bug 26

Summary: Elements with multiple lines do not display properly in trace viewer
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: 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

Description Dan Ricketts 2010-01-22 01:03:52 UTC
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.
Comment 1 Leslie Lamport 2010-01-22 01:22:34 UTC
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?
Comment 2 Dan Ricketts 2010-01-22 11:02:03 UTC
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.
Comment 3 Dan Ricketts 2010-01-22 13:18:00 UTC
Multi-line expressions are now displayed as a single line in the Name column.
Comment 4 Dan Ricketts 2010-01-22 13:18:02 UTC
Created attachment 7 [details]
mylyn/context/zip

Bug 27

Summary: Extra menu for the toolbox on Mac
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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

Description Dan Ricketts 2010-01-25 12:56:22 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-25 14:00:10 UTC
Fixed in HEAD
Comment 2 Markus Alexander Kuppe 2011-08-25 14:00:11 UTC
Created attachment 104 [details]
mylyn/context/zip

Bug 28

Summary: Use of model values
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 14:51:06 UTC
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.

Bug 29

Summary: PlusCal translator errors do not disappear
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 14:54:45 UTC
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.)

Bug 30

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 ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 14:56:08 UTC
The Definitions Override menu allows the user to override the same definition multiple times.

Bug 31

Summary: Parsing spec command gets disabled
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: major CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Dan Ricketts 2010-01-25 14:58:00 UTC
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.

Bug 32

Summary: Closing the toolbox simply kills any running TLC
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 14:59:52 UTC
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.

Bug 33

Summary: PlusCal translation needs to be reimplemented to handle .pcal files
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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:    

Description Dan Ricketts 2010-01-25 15:02:15 UTC
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.)
Comment 1 Leslie Lamport 2010-02-03 10:28:07 UTC
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.
Comment 2 Leslie Lamport 2010-03-01 23:59:21 UTC
The plan to use .pcal files has been abandoned as a bad idea.

Bug 34

Summary: Reset window layout produces blank window in welcome perspective
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:04:42 UTC
If I select window / reset window layout in the Welcome Perspective, it produces a blank window instead of the Welcome View.
Comment 1 Dan Ricketts 2010-07-01 11:49:27 UTC
We should just disable the reset window command.

Bug 35

Summary: Module editor keybindings
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:05:58 UTC
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.

Bug 36

Summary: Option to add lists of weakly and strongly fair actions
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WONTFIX    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:07:34 UTC
Enhance the Init/Next method of writing the spec to add lists of weakly and strongly fair actions.
Comment 1 Markus Alexander Kuppe 2011-05-17 16:35:00 UTC
LL Comment: Now that the user can specify fairness with PlusCal, this seems unnecessary.

Bug 37

Summary: Change default for making a set of model values typed or untyped
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P2    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:10:01 UTC
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.
Comment 1 Simon Zambrovski 2010-01-25 15:54:58 UTC
The reason of the default setting being "typed" is because we want people to use typed sets instead of untyped sets.

Bug 38

Summary: Import Existing spec option behaves incorrectly when .toolbox directory does not exist
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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: ---

Description Dan Ricketts 2010-01-25 15:16:38 UTC
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.
Comment 1 Leslie Lamport 2011-08-17 21:24:04 UTC
It has been forgotten about.

Bug 39

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 ComponentAssignee: 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

Description Dan Ricketts 2010-01-25 15:18:45 UTC
When the user clicks on File/Open 
Module/Choose TLA+ Module, the file browser that pops up should show the
 specification's directory.
Comment 1 Simon Zambrovski 2010-01-25 15:57:08 UTC
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...
Comment 2 Dan Ricketts 2010-01-25 16:00:51 UTC
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.
Comment 3 Leslie Lamport 2010-02-02 19:08:54 UTC
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.
Comment 4 Dan Ricketts 2010-02-03 14:17:30 UTC
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.
Comment 5 Dan Ricketts 2010-02-03 14:17:32 UTC
Created attachment 13 [details]
mylyn/context/zip

Bug 40

Summary: TLC's liveness checking in simulation mode is buggy
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLA ToolsAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: bugzilla.tlaplus.net
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:20:25 UTC
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.
Comment 1 Markus Alexander Kuppe 2015-04-27 11:54:45 UTC
Fixed

Bug 41

Summary: Model editor does not remove some error messages on user input
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-01-25 15:24:54 UTC
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".

Bug 42

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+ EditorAssignee: 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: ---

Description Dan Ricketts 2010-01-27 11:37:52 UTC
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.

Bug 43

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 ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Mac OS   
Target Version: ---

Description Dan Ricketts 2010-01-28 17:03:00 UTC
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.
Comment 1 Dan Ricketts 2010-07-01 11:52:24 UTC
This only occurs on mac OS. I spent some time trying to figure out why this occurs, but was unsuccessful.

Bug 44

Summary: Drag-and-drop in module editor?
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-01-29 08:36:21 UTC
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.

Bug 45

Summary: The toolbox program file is not being set to be executable.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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: ---

Description Leslie Lamport 2010-01-30 22:08:47 UTC
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.
Comment 1 Dan Ricketts 2010-02-02 13:27:04 UTC
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.
Comment 2 Dan Ricketts 2010-02-02 13:30:35 UTC
This is a discussion on the same topic:

http://www.eclipse.org/forums/index.php?t=msg&goto=373468&
Comment 3 Dan Ricketts 2010-02-02 13:41:37 UTC
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?
Comment 4 Dan Ricketts 2010-02-02 15:30:40 UTC
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.

Bug 46

Summary: Validating the model deletes the contents of MC.out
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-01 13:06:55 UTC
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.
Comment 1 Dan Ricketts 2010-02-04 17:27:26 UTC
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?
Comment 2 Simon Zambrovski 2010-02-05 00:08:50 UTC
You are right. Running validateion in general means regeneration of the MC files. Which means that the MC.out file is obsolete.
Comment 3 Dan Ricketts 2010-02-05 15:10:41 UTC
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.

Bug 47

Summary: Automatically add last updated comment to end of module
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-01 15:47:17 UTC
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 ... ?

Bug 48

Summary: Load all spec modules at once
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P5    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-01 15:48:46 UTC
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?
Comment 1 Leslie Lamport 2010-02-03 16:36:46 UTC
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.

Bug 49

Summary: Goto definition feature not opening new module editor when it should.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: 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

Description Leslie Lamport 2010-02-02 13:40:52 UTC
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
Comment 1 Dan Ricketts 2010-02-24 14:11:24 UTC
The ID used for opening the editor was wrong.
Comment 2 Dan Ricketts 2010-02-24 14:11:27 UTC
Created attachment 17 [details]
mylyn/context/zip

Bug 50

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 ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-02 14:10:11 UTC
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.
Comment 1 Dan Ricketts 2010-02-03 16:15:04 UTC
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.

Bug 51

Summary: Running trace explorer does not disable running of the model checker
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-02 14:40:51 UTC
Running the trace explorer should disable 
running of the model checker on the same model because both operations 
work on the same directory.

Bug 52

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 ComponentAssignee: 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

Description Dan Ricketts 2010-02-02 15:15:29 UTC
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.
Comment 1 Dan Ricketts 2010-02-03 15:38:27 UTC
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.
Comment 2 Dan Ricketts 2010-02-03 15:38:28 UTC
Created attachment 14 [details]
mylyn/context/zip

Bug 53

Summary: Go-to definition/declaration does not work for non-spec modules
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLA+ EditorAssignee: 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

Description Dan Ricketts 2010-02-02 15:28:04 UTC
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.
Comment 1 Dan Ricketts 2010-02-02 15:31:30 UTC
Created attachment 12 [details]
mylyn/context/zip
Comment 2 Dan Ricketts 2010-07-01 11:55:36 UTC
According to Leslie, this is fixed as much as it's going to be.

Bug 54

Summary: Default for Save As browser should be Browse Folders
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WORKSFORME    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-02-02 19:17:23 UTC
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.
Comment 1 Dan Ricketts 2010-02-02 19:35:53 UTC
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?

Bug 55

Summary: Feature needed for handling many specs
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-02-03 08:27:19 UTC
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.
Comment 1 Dan Ricketts 2010-02-03 08:58:19 UTC
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.
Comment 2 Dan Ricketts 2010-04-13 20:00:31 UTC
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.

Bug 56

Summary: Feature needed for controlling disk space usage
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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 2010-02-03 08:47:34 UTC
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.

Bug 57

Summary: Minor bug in Spec Explorer: permits operations on models of unopened spec
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-02-03 08:59:52 UTC
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.

Bug 58

Summary: Renaming a spec does not change model configuration file names
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: 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

Description Dan Ricketts 2010-02-03 14:40:39 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-15 19:19:28 UTC
Fixed in HEAD
Comment 2 Markus Alexander Kuppe 2011-07-15 19:19:31 UTC
Created attachment 71 [details]
mylyn/context/zip

Bug 59

Summary: Trace Explorer getting wedged (plus minor bug)
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-02-04 16:12:31 UTC
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.
Comment 1 Dan Ricketts 2010-02-04 16:28:35 UTC
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).
Comment 2 Dan Ricketts 2010-02-04 17:25:26 UTC
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.
Comment 3 Dan Ricketts 2010-02-05 15:07:38 UTC
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.
Comment 4 Dan Ricketts 2010-02-05 15:08:38 UTC
MC_TE.out is created by attaching a sink to
 the process output sink for TLC runs. The class is 
TraceExplorerTraceSourceOutputSink.

Bug 60

Summary: Trace Explorer's TE.tla file has entries in wrong order
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2010-02-04 16:17:15 UTC
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.
Comment 1 Dan Ricketts 2010-02-04 16:41:46 UTC
Created attachment 15 [details]
mylyn/context/zip

Bug 61

Summary: Hiding of variables in Trace Explorer
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-02-04 16:24:10 UTC
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.
Comment 1 Simon Zambrovski 2010-02-05 00:12:19 UTC
I would add a filter (JFace Viwers support filters), which can be activated using a view-action.

Bug 62

Summary: Build custom about dialog
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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: ---

Description Dan Ricketts 2010-02-04 16:45:37 UTC
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.
Comment 1 Simon Zambrovski 2010-02-05 00:10:35 UTC
In general, the About dialog is 
customizable. I read somewhere about it. I suppose it is set up using 
the plugin_customization.ini.

Bug 63

Summary: Change order of trace explorer variables in trace viewer
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-02-04 16:56:19 UTC
The trace explorer variables should appear before other variables in the order in which the user entered the expressions.
Comment 1 Leslie Lamport 2010-07-14 03:25:07 UTC
Dan apparently fixed this months ago.

Bug 64

Summary: Constant expression evaluation shows up in User Output on linux
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Linux   
Target Version: ---

Description Dan Ricketts 2010-02-05 16:11:41 UTC
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.
Comment 1 Dan Ricketts 2010-02-05 16:15:19 UTC
This also occurs on mac.

Bug 66

Summary: Clicking on module location jumps to PDF viewer sometimes
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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

Description Dan Ricketts 2010-02-18 00:29:11 UTC
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.
Comment 1 Dan Ricketts 2010-02-18 10:59:12 UTC
Created attachment 16 [details]
mylyn/context/zip

Bug 67

Summary: Problem with printing of invariant when it is violated.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-01 23:47:38 UTC
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.

Bug 68

Summary: Set defaults for PlusCal algorithms
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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 2010-03-01 23:58:04 UTC
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.

Bug 69

Summary: Toolbox confused about directories.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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: ---

Description Leslie Lamport 2010-03-02 17:24:10 UTC
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.
Comment 1 Leslie Lamport 2010-03-02 17:28:37 UTC
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.

Bug 70

Summary: Save dirty editor prior to execution - PlusCal preference and Save on Run TLC option
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-04 07:28:27 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-05-17 16:30:28 UTC
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, 
....)
Comment 2 Markus Alexander Kuppe 2011-07-14 17:26:47 UTC
The second part of this bug in now tracked in bug #150.

Bug 71

Summary: Make it easier to clone a model
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-05 03:29:31 UTC
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.

Bug 72

Summary: Inconvenience in using TLA2TeX
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-05 17:47:09 UTC
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.)
Comment 1 Markus Alexander Kuppe 2011-05-17 14:10:35 UTC
Might be related to bug #117

Bug 73

Summary: TLC not reporting anything useful on a stack overflow
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA ToolsAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-10 04:05:54 UTC
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.
Comment 1 Leslie Lamport 2010-03-13 03:54:37 UTC
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.

Bug 74

Summary: Toolbox does not report violated invariant
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: 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

Description Dan Ricketts 2010-03-12 20:34:31 UTC
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).
Comment 1 Markus Alexander Kuppe 2011-05-17 14:32:57 UTC
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.

Bug 75

Summary: Allow examining a locked TLC model.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-13 16:04:17 UTC
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.
Comment 1 Dan Ricketts 2010-03-18 10:34:03 UTC
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.

Bug 76

Summary: Browse button on new spec menu not working
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WORKSFORME    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-03-24 23:34:22 UTC
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.
Comment 1 Dan Ricketts 2010-03-25 16:01:19 UTC
I can't reproduce this. Is there anything worth noting that gets printed to the console when this happens?
Comment 2 Leslie Lamport 2010-03-26 19:17:08 UTC
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.

Bug 77

Summary: Model Editor unusable when checkpoints folder is large
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: TLC ComponentAssignee: 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

Description Dan Ricketts 2010-03-29 17:26:46 UTC
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.
Comment 1 Dan Ricketts 2010-05-05 11:59:16 UTC
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.
Comment 2 Dan Ricketts 2010-05-05 11:59:18 UTC
Created attachment 20 [details]
mylyn/context/zip

Bug 78

Summary: Non-automatic parsing locks UI
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: 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: ---

Description Dan Ricketts 2010-03-30 12:36:56 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-05-11 15:19:20 UTC
*** This bug has been marked as a duplicate of bug 103 ***

Bug 79

Summary: Add new TLC parameter Maximum Fingerprint Memory Size
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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:    

Description Leslie Lamport 2010-04-07 00:41:12 UTC
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.
Comment 1 Leslie Lamport 2010-04-07 20:21:46 UTC
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.)

Bug 80

Summary: trace explorer doesn't work on trace of length 1
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-04-11 18:19:23 UTC
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.)
Comment 1 Leslie Lamport 2010-07-14 03:35:46 UTC
This now appears to work.  I presume Dan fixed it without marking the bug report as resolved.

Bug 81

Summary: Bad behavior of model-editor page with long Invariants and Properties.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-04-11 19:39:29 UTC
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.
Comment 1 Dan Ricketts 2010-07-01 12:06:18 UTC
I suggest preventing the widgets from expanding and adding a scroll bar.

Bug 82

Summary: Toolbox crashed by out-of-memory exception
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2010-04-26 18:23:28 UTC
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
Comment 1 Dan Ricketts 2010-04-26 19:11:42 UTC
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.
Comment 2 Leslie Lamport 2010-04-26 19:37:03 UTC
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.
Comment 3 Dan Ricketts 2010-04-26 20:11:28 UTC
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.
Comment 4 Leslie Lamport 2010-04-26 21:17:26 UTC
Created attachment 19 [details]
the files

I think I finally figured out how to attach this.
Comment 5 Leslie Lamport 2010-04-26 21:19:01 UTC
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.)
Comment 6 Simon Zambrovski 2010-04-26 22:30:35 UTC
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.
Comment 7 Leslie Lamport 2010-04-26 22:55:14 UTC
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.
Comment 8 Simon Zambrovski 2010-04-26 23:13:47 UTC
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.
Comment 9 Dan Ricketts 2010-04-27 12:48:09 UTC
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.
Comment 10 Dan Ricketts 2010-04-27 12:53:42 UTC
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.
Comment 11 Dan Ricketts 2010-04-27 13:20:11 UTC
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.
Comment 12 Leslie Lamport 2010-04-27 16:23:58 UTC
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.
Comment 13 Dan Ricketts 2010-04-30 10:39:08 UTC
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.
Comment 14 Dan Ricketts 2010-07-01 12:08:39 UTC
I've fixed the two memory leaks that I noticed, so this is at least partially fixed.

Bug 83

Summary: Renumber proof command does not work for non theorem nodes
Product: TLA+ Toolbox Reporter: Dan Ricketts <daniel.bmore.ricketts>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Dan Ricketts 2010-06-02 12:47:54 UTC
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.

Bug 86

Summary: Goto Declaration not working with subexpression names
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-07-14 03:21:12 UTC
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.
Comment 1 Leslie Lamport 2010-10-01 08:37:36 UTC
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".)

Bug 87

Summary: Toolbox will not raise TLAPM console if TLC console has been raised.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WONTFIX    
Severity: normal CC: simon
Priority: P4    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-08-21 02:59:01 UTC
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.
Comment 1 Dan Ricketts 2010-08-22 17:29:02 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-05-17 16:36:08 UTC
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.

Bug 88

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+ EditorAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P5    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-09-02 03:40:17 UTC
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.
Comment 1 Leslie Lamport 2010-09-14 08:37:06 UTC
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).
Comment 2 Leslie Lamport 2010-09-14 12:41:15 UTC
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.
Comment 3 Leslie Lamport 2010-09-17 10:52:02 UTC
Note: Goto Declaration, etc. don't work on a symbol formed with a parameterized instantiation--e.g., I(exp)!Foo.
Comment 4 Leslie Lamport 2010-10-01 08:38:33 UTC
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".)

Bug 89

Summary: Show Uses (F6) not working.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-09-16 12:05:05 UTC
I don't know what happened, but it's perhaps not a coincidence that this appeared after I partiallly fixed bug 88.
Comment 1 Leslie Lamport 2010-09-17 10:32:50 UTC
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.

Bug 90

Summary: Performance problem reading any non-trivial amount of TLC output
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2010-10-01 08:52:12 UTC
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.
Comment 1 Leslie Lamport 2010-10-01 15:42:16 UTC
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.
Comment 2 Leslie Lamport 2010-10-01 16:13:43 UTC
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.)
Comment 3 Markus Alexander Kuppe 2011-05-30 13:11:52 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-05-30 13:12:11 UTC
Created attachment 38 [details]
spec
Comment 5 Markus Alexander Kuppe 2011-07-01 20:16:41 UTC
I assume all issues mentioned in this bug report have been solved by fix for bug #151

*** This bug has been marked as a duplicate of bug 151 ***

Bug 91

Summary: Sany error not being reported by the toolbox.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-10-15 18:03:41 UTC
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'
================
Comment 1 Leslie Lamport 2010-10-17 17:52:01 UTC
Fixed by change to ModuleParserLauncher.findLineAndColumn.

Bug 92

Summary: Launch Prover command does not check if module has been saved.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2010-12-14 04:01:50 UTC
As it says, the Launch Prover command (Ctl+G Ctl+P) does not check if the module has been saved.  It should.
Comment 1 Leslie Lamport 2010-12-14 19:26:46 UTC
Fixed by copying some code from the other commands.

Bug 93

Summary: Characters produced by alt + number key cannot be entered from keyboard
Product: TLA+ Toolbox Reporter: Vidar <vidar_slatten>
Component: TLA+ EditorAssignee: 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: ---

Description Vidar 2010-12-20 11:28:49 UTC
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
Comment 1 Leslie Lamport 2011-01-13 17:26:23 UTC
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.

Bug 94

Summary: Toolbox can't deal with long prover console output.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2011-02-08 01:30:56 UTC
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)
Comment 1 Dan Ricketts 2011-02-08 06:34:32 UTC
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.
Comment 2 Leslie Lamport 2011-02-08 21:19:36 UTC
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.

Bug 95

Summary: Toolbox displaying only a tiny piece of a TLC error message (and missing feature)
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2011-03-11 01:21:17 UTC
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).
Comment 1 Leslie Lamport 2011-03-11 20:42:02 UTC
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.
Comment 2 Leslie Lamport 2011-03-13 18:21:52 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-05-17 16:34:01 UTC
Related to bug #7

Bug 96

Summary: Print output not shown in Evaluate Constant Expression
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2011-03-11 01:48:54 UTC
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.
Comment 1 Leslie Lamport 2011-03-11 03:04:14 UTC
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.
Comment 2 Leslie Lamport 2011-03-11 03:22:32 UTC
I moved the appropriate TLC code and it seems to have fixed the problem.

Bug 97

Summary: Toolbox not reporting invariant violation
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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
...

Description Leslie Lamport 2011-03-22 03:06:04 UTC
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 }
----

----
Comment 1 Leslie Lamport 2011-03-22 03:07:14 UTC
Created attachment 21 [details]
Source file
Comment 2 Leslie Lamport 2011-03-22 03:07:45 UTC
Created attachment 22 [details]
The MC.out file
Comment 3 Leslie Lamport 2011-03-22 03:08:18 UTC
Created attachment 23 [details]
guess what
Comment 4 Leslie Lamport 2011-03-22 03:08:47 UTC
Created attachment 24 [details]
you'll never guess
Comment 5 Leslie Lamport 2011-03-22 03:09:22 UTC
Created attachment 25 [details]
...
Comment 6 Leslie Lamport 2011-03-22 03:11:09 UTC
How nice, the attached files are all comments.  Very helpful.  But they're now there.
Comment 7 Leslie Lamport 2011-03-22 03:24:16 UTC
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.

Bug 98

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 ComponentAssignee: 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

Description Chris Newcombe 2011-04-03 20:39:29 UTC
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.
Comment 1 Leslie Lamport 2011-04-09 21:18:18 UTC
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.
Comment 2 Markus Alexander Kuppe 2015-02-23 11:34:44 UTC
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.
Comment 3 Markus Alexander Kuppe 2015-03-05 09:02:57 UTC
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.
Comment 4 Markus Alexander Kuppe 2015-03-18 18:25:22 UTC
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.
Comment 5 Markus Alexander Kuppe 2015-03-20 16:41:13 UTC
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)
Comment 6 Markus Alexander Kuppe 2015-05-12 13:55:45 UTC
Fixed with 1.5.0
Comment 7 Markus Alexander Kuppe 2015-10-06 06:53:59 UTC
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

Bug 100

Summary: Toolbox in confused state after system restart during model-checking
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLC ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WONTFIX    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows   
Target Version: ---

Description Chris Newcombe 2011-04-03 20:45:54 UTC
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.
Comment 1 Leslie Lamport 2011-04-07 20:12:20 UTC
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.

Bug 101

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 ComponentAssignee: Dan Ricketts <daniel.bmore.ricketts>
Status: RESOLVED WORKSFORME    
Severity: normal CC: simon
Priority: P2    
Version: unspecified   
Hardware: All   
OS: Windows   
Target Version: ---

Description Leslie Lamport 2011-04-07 20:14:38 UTC
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(...).

Bug 102

Summary: Incorrect links in displayed PlusCal translator error message
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2011-04-17 21:35:32 UTC
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.
Comment 1 Leslie Lamport 2011-04-17 21:36:59 UTC
Created attachment 26 [details]
this is a tla file
Comment 2 Leslie Lamport 2013-06-11 10:44:20 UTC
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.

Bug 103

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+ EditorAssignee: 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: ---

Description Markus Alexander Kuppe 2011-05-04 14:28:38 UTC
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.
Comment 1 Simon Zambrovski 2011-05-06 20:59:28 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-05-11 15:19:20 UTC
*** Bug 78 has been marked as a duplicate of this bug. ***
Comment 3 Markus Alexander Kuppe 2011-06-27 13:25:07 UTC
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)
Comment 4 Markus Alexander Kuppe 2011-06-30 11:03:02 UTC
org.lamport.tla.toolbox.tool.tlc.traceexplorer.TraceExplorerComposite.doExplore()
Comment 5 Markus Alexander Kuppe 2011-07-01 19:58:47 UTC
org.lamport.tla.toolbox.tool.tlc.ui.modelexplorer.CloneModelContributionItem.getContributionItems()
Comment 6 Markus Alexander Kuppe 2011-07-01 19:59:05 UTC
*** Bug 137 has been marked as a duplicate of this bug. ***
Comment 7 Markus Alexander Kuppe 2011-07-01 20:17:57 UTC
*** Bug 110 has been marked as a duplicate of this bug. ***
Comment 8 Markus Alexander Kuppe 2011-07-01 20:18:10 UTC
org.lamport.tla.toolbox.tool.tla2tex.handler.ProducePDFHandler.execute(ExecutionEvent)

Bug 104

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 ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-05-09 10:14:35 UTC
org.lamport.tla.toolbox.* bundles use Java5 API but their BREE is set to Java 1.4.
Comment 1 Markus Alexander Kuppe 2011-05-09 10:18:14 UTC
BREE has been set to Java 1.5
Comment 2 Markus Alexander Kuppe 2011-05-09 10:18:16 UTC
Created attachment 27 [details]
mylyn/context/zip

Bug 105

Summary: org.lamport.tla.toolbox.tool.prover uses Java 1.6 API
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-05-09 10:23:53 UTC
java.lang.String.isEmpty() is not avaiable in Java 5
Comment 1 Markus Alexander Kuppe 2011-05-09 10:34:39 UTC
Fix released by replacing isEmpty() with length() == 0
Comment 2 Markus Alexander Kuppe 2011-05-09 10:34:40 UTC
Created attachment 28 [details]
mylyn/context/zip

Bug 106

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 ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-05-09 12:29:50 UTC
Both bundles may _optionally_ depend on 
package "junit.framework" to satisfy the build time dependency but allow
 Junits absence at runtime.
Comment 1 Markus Alexander Kuppe 2011-05-09 12:45:16 UTC
Fix released
Comment 2 Markus Alexander Kuppe 2011-05-09 12:45:17 UTC
Created attachment 29 [details]
mylyn/context/zip

Bug 107

Summary: Distributed TLC based on RMI broken
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-09 12:46:48 UTC
Refactorings broke the RMI based distributed version of TLC.
Comment 1 Markus Alexander Kuppe 2011-05-09 12:51:27 UTC
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.
Comment 2 Simon Zambrovski 2011-05-09 21:39:39 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-05-31 11:37:51 UTC
Fixed in HEAD (more performance tests pending)

Bug 108

Summary: Add framework to run automated UI tests
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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:    

Description Markus Alexander Kuppe 2011-05-11 15:15:33 UTC
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/
Comment 1 Markus Alexander Kuppe 2011-05-31 11:40:20 UTC
Framework released to HEAD

Bug 109

Summary: Automatically detect pdflatex on the system
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 15:36:18 UTC
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

Bug 110

Summary: "Produce PDF Version" handler executes PDF generation on the UI thread
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED DUPLICATE    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 15:38:21 UTC
Canceling a long or stuck operation is impossible since the buttons don't work.
Comment 1 Markus Alexander Kuppe 2011-07-01 20:15:16 UTC
org.lamport.tla.toolbox.tool.tla2tex.PDFHandlerThreadingTest has been added as a test case, though not activated yet.
Comment 2 Markus Alexander Kuppe 2011-07-01 20:17:57 UTC
*** This bug has been marked as a duplicate of bug 103 ***

Bug 111

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 ComponentAssignee: 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    

Description Markus Alexander Kuppe 2011-05-11 16:12:00 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-05-17 16:35:58 UTC
See bug# 82 (same code area)
Comment 2 Markus Alexander Kuppe 2011-07-18 13:04:17 UTC
Fixed by bug #116

Bug 112

Summary: Open spec wizard accepts specs with illegal names
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-11 16:13:10 UTC
Add a marker to the new spec wizard forbidding illegal names (like -)
Comment 1 Markus Alexander Kuppe 2011-05-31 11:41:08 UTC
Fixed in HEAD, verified on Mac, Windows XP, Linux
Comment 2 Markus Alexander Kuppe 2011-05-31 11:41:09 UTC
Created attachment 40 [details]
mylyn/context/zip

Bug 113

Summary: Toolbox does not shut down gracefully with model checks still running
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 16:15:34 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-05-11 17:03:45 UTC
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)
Comment 2 Markus Alexander Kuppe 2011-05-12 08:48:22 UTC
!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
Comment 3 Markus Alexander Kuppe 2011-05-18 12:42:46 UTC
!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)
Comment 4 Markus Alexander Kuppe 2011-05-19 18:50:03 UTC
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)
Comment 5 Markus Alexander Kuppe 2011-05-19 18:50:20 UTC
!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)

Bug 114

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 16:24:25 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-05-11 16:25:17 UTC
!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

Bug 115

Summary: Open .tla from the system by double clicking in TLA Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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:    

Description Markus Alexander Kuppe 2011-05-11 16:34:07 UTC
This feature has been added with Eclipse 3.6 (Helios release) [0].

[0] https://bugs.eclipse.org/4922
Comment 1 Markus Alexander Kuppe 2011-08-04 09:57:33 UTC
See Eclipse bug https://bugs.eclipse.org/4922

Bug 116

Summary: Upgrade to recent Eclipse RCP version
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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    

Description Markus Alexander Kuppe 2011-05-11 16:45:13 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-18 10:15:22 UTC
Fixed a while ago with the introduction of an automated build

Bug 117

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: Windows   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 16:51:24 UTC
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.

Bug 118

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 16:55:52 UTC

    
Comment 1 Markus Alexander Kuppe 2011-05-17 16:31:11 UTC
LL comment: Even go further and do not show the translation button unless the current spec contains a PlusCal spec.

Bug 119

Summary: German keyboard layout does not match ASCII values
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P4    
Version: 1.3   
Hardware: All   
OS: Mac OS   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-11 19:08:34 UTC
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."

Bug 120

Summary: Automated product build
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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    

Description Markus Alexander Kuppe 2011-05-12 13:32:11 UTC
TLA+ Toolbox currently is build manually from inside the development environment. A headless build should replace this task.
Comment 1 Markus Alexander Kuppe 2011-05-31 11:41:32 UTC
Fix released to SVN

run "mvn install" in the tla2-inria/ folder to build products

Bug 121

Summary: Renaming spec broken, causing inconsistent projects even after Toolbox restart
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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:    

Description Markus Alexander Kuppe 2011-05-17 16:39:21 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-14 18:57:23 UTC
Is a spec rename even supposed to change the name of the root .tla file as well as the module name inside?
Comment 2 Markus Alexander Kuppe 2011-07-18 11:20:31 UTC
Fixed in HEAD

Bug 122

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Linux   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-18 08:22:30 UTC
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).
Comment 1 Markus Alexander Kuppe 2011-05-18 08:46:14 UTC
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.

Bug 123

Summary: Statusline should indicate "unparsed" state on dirty editor
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-18 08:30:32 UTC
"[...] 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)
Comment 1 Markus Alexander Kuppe 2011-05-18 08:37:55 UTC
"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)
Comment 2 Markus Alexander Kuppe 2011-05-18 09:41:28 UTC
Created attachment 30 [details]
Protocol Bernhard Schildendorfer

see page 4 to 5
Comment 3 Markus Alexander Kuppe 2011-05-18 09:49:39 UTC
Created attachment 31 [details]
Report Bernd Wittman

see page 2

Bug 124

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-18 08:36:40 UTC
"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.
Comment 1 Markus Alexander Kuppe 2011-05-18 09:51:06 UTC
Created attachment 32 [details]
Report Silvia Straihammer

Bug 125

Summary: Toolbox fails to detect default VM installation on first run
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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    

Description Markus Alexander Kuppe 2011-05-19 18:52:07 UTC
It has been reported, that the Toolbox fails to start if not installed into Applications/. Verification pending...
Comment 1 Markus Alexander Kuppe 2011-06-10 18:51:54 UTC
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
Comment 2 Markus Alexander Kuppe 2011-06-10 18:59:44 UTC
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)
Comment 3 Markus Alexander Kuppe 2011-06-10 19:01:15 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-06-22 16:10:09 UTC
If bundle "org.eclipse.jdt.launching.macosx" is missing, eclipse fails to detect/find the VM on Mac.
Comment 5 Markus Alexander Kuppe 2011-07-01 20:00:16 UTC
*** Bug 133 has been marked as a duplicate of this bug. ***
Comment 6 Markus Alexander Kuppe 2011-07-18 13:04:21 UTC
Fixed by bug #116

Bug 126

Summary: NPE in Add Spec handler when parent directory does not exist
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-24 08:31:15 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-07-14 11:24:08 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-14 11:24:09 UTC
Created attachment 68 [details]
mylyn/context/zip

Bug 127

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-25 14:59:10 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-06 13:18:59 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-07-06 13:19:02 UTC
Created attachment 58 [details]
mylyn/context/zip

Bug 128

Summary: util.SimpleFilenameToStream.locate(String) fails if path contains whitespaces
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-26 14:24:46 UTC
\\C:\\Documents%20and%20Settings\\markus\\tlatoolbox\\tlatools\\class\\tla2sany\\StandardModules\\
 vs "\\C:\\Documents and 
Settings\\markus\\tlatoolbox\\tlatools\\class\\tla2sany\\StandardModules\\"
Comment 1 Markus Alexander Kuppe 2011-05-27 09:16:02 UTC
Fix released to HEAD, verified on Mac OS X, Windows XP (x86) and Linux.
Comment 2 Markus Alexander Kuppe 2011-05-27 09:16:05 UTC
Created attachment 33 [details]
mylyn/context/zip

Bug 129

Summary: TLCWorker may read specification and configuration from TLCServer via RMI
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-05-26 14:26:49 UTC
Instead of requiring the user to copy the 
specification and configuration files to all workers, workers may read 
the files with RMI.
Comment 1 Markus Alexander Kuppe 2011-07-01 19:57:43 UTC
Closing as fixed, RMI has been added to TLCServerRMI.
Comment 2 Markus Alexander Kuppe 2011-07-01 19:57:44 UTC
Created attachment 55 [details]
mylyn/context/zip

Bug 130

Summary: tlc2.util.ByteUtilsTest fails to create test file
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-27 09:54:49 UTC
-- 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)
Comment 1 Markus Alexander Kuppe 2011-05-27 10:00:15 UTC
Fix released to HEAD, verified on Linux
Comment 2 Markus Alexander Kuppe 2011-05-27 10:00:19 UTC
Created attachment 34 [details]
mylyn/context/zip

Bug 131

Summary: tlc2.util.BigInt.equals causes java.lang.StackOverflowError
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-27 10:02:40 UTC
-- 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)
Comment 1 Markus Alexander Kuppe 2011-05-27 10:17:45 UTC
Fix released to HEAD, verified on Linux
Comment 2 Markus Alexander Kuppe 2011-05-27 10:17:48 UTC
Created attachment 35 [details]
mylyn/context/zip

Bug 132

Summary: Open Saved Module menu item not grayed out
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: minor CC: simon
Priority: P5    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2011-05-29 17:23:12 UTC
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.)

Bug 133

Summary: Internal Error when running TLC on Mac
Product: TLA+ Toolbox Reporter: Michael Leuschel <leuschel>
Component: TLC ComponentAssignee: 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: ---

Description Michael Leuschel 2011-05-30 16:44:01 UTC
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.)
Comment 1 Markus Alexander Kuppe 2011-05-30 17:38:01 UTC
(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
Comment 2 Markus Alexander Kuppe 2011-07-01 20:00:16 UTC
*** This bug has been marked as a duplicate of bug 125 ***

Bug 134

Summary: Distributed TLC does not compile on Java 1.5
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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 Markus Alexander Kuppe 2011-05-31 09:25:14 UTC
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
Comment 1 Markus Alexander Kuppe 2011-05-31 11:35:09 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-05-31 11:35:11 UTC
Created attachment 39 [details]
mylyn/context/zip

Bug 135

Summary: NPE startup crash requiring Toolbox restart (happens randomly)
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-05-31 11:52:21 UTC
!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)
Comment 1 Markus Alexander Kuppe 2011-05-31 11:53:01 UTC
Created attachment 41 [details]
Console output
Comment 2 Markus Alexander Kuppe 2011-05-31 11:55:57 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-05-31 11:55:58 UTC
Created attachment 42 [details]
mylyn/context/zip
Comment 4 Markus Alexander Kuppe 2011-05-31 11:56:35 UTC
To activate assertions in Eclipse follow http://tech.puredanger.com/2007/01/17/eclipse-assertions/
Comment 5 Leslie Lamport 2011-05-31 12:06:51 UTC
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.
Comment 6 Markus Alexander Kuppe 2011-06-21 15:52:04 UTC
Changed 
ProverUIActivator.start(BundleContext) to access the preference store 
from inside the UI thread to prevent SWT invalid thread access 
exceptions.
Comment 7 Markus Alexander Kuppe 2011-07-01 19:56:00 UTC
Changes in comment #6 seem to have done the trick, closing as fixed.
Comment 8 Markus Alexander Kuppe 2011-07-01 19:56:01 UTC
Created attachment 54 [details]
mylyn/context/zip

Bug 136

Summary: NPE in UIHelper.runCommand() if workbench window is inactive
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-05-31 15:13:18 UTC
!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)

Bug 137

Summary: CloneModelContributionItem.getContributionItems() refreshes workspace in UI thread
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED DUPLICATE    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-06-01 11:14:16 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-06-08 08:59:18 UTC
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)
Comment 2 Markus Alexander Kuppe 2011-07-01 19:59:05 UTC
*** This bug has been marked as a duplicate of bug 103 ***

Bug 138

Summary: Missing view descriptor causes PartInitException at startup
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-02 10:38:55 UTC
!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
Comment 1 Markus Alexander Kuppe 2011-07-18 09:45:23 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-18 09:45:25 UTC
Created attachment 72 [details]
mylyn/context/zip

Bug 139

Summary: "Evaluate Constant Expression" output shows set with duplicate elements
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLA ToolsAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P3    
Version: 1.3   
Hardware: x86 64-bit   
OS: Windows 7   
Target Version: ---

Description Chris Newcombe 2011-06-05 23:21:20 UTC
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)
=============================================================================
Comment 1 Leslie Lamport 2011-06-22 18:23:40 UTC
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.
Comment 2 Leslie Lamport 2011-06-22 18:55:47 UTC
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.

Bug 140

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-07 15:34:27 UTC
The fingerprint server is intended to be a shared (RMI) resource and thus must be accessed with call by reference semantics.
Comment 1 Markus Alexander Kuppe 2011-06-07 15:34:53 UTC
Fix  released to HEAD
Comment 2 Markus Alexander Kuppe 2011-06-07 15:34:54 UTC
Created attachment 43 [details]
mylyn/context/zip

Bug 141

Summary: UniqueString has to be created by TLCServer in distributed mode
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-07 17:09:33 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-06-07 17:12:01 UTC
Fix released to HEAD, UniqueString creation is now delegated to the central TLCServer (bottleneck).
Comment 2 Markus Alexander Kuppe 2011-06-07 17:12:02 UTC
Created attachment 44 [details]
mylyn/context/zip

Bug 142

Summary: TLCServer fails due to missing fingerprint file on worker connect
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED INVALID    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: Linux   
Target Version: ---

Description Markus Alexander Kuppe 2011-06-08 10:35:53 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-06-08 11:30:04 UTC
Caused by g5k deployment script

Bug 143

Summary: TLCWorkers may wait for TLCServer to come online
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-09 09:25:42 UTC
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).
Comment 1 Markus Alexander Kuppe 2011-06-09 09:29:17 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-06-09 09:29:18 UTC
Created attachment 45 [details]
mylyn/context/zip

Bug 144

Summary: Collect and report performance statistics for RMI distributed TLC
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-09 09:30:36 UTC
In order to improve distributed TLC, reproducable statistics have to be collected during runtime.
Comment 1 Markus Alexander Kuppe 2011-06-09 11:58:04 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-06-09 11:58:07 UTC
Created attachment 46 [details]
mylyn/context/zip

Bug 145

Summary: Toolbox not reporting a TLC error
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2011-06-09 18:51:02 UTC
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 }
Comment 1 Leslie Lamport 2011-06-09 18:53:35 UTC
Created attachment 47 [details]
a zip file

The model in question is Model_1.  The clone Model_1_Copy worked.

Bug 146

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 ComponentAssignee: 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

Description Leslie Lamport 2011-06-10 07:01:15 UTC
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.
Comment 1 Leslie Lamport 2011-06-10 07:26:03 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-06-10 19:46:52 UTC
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)
Comment 3 Markus Alexander Kuppe 2011-06-10 19:46:56 UTC
Created attachment 48 [details]
mylyn/context/zip
Comment 4 Markus Alexander Kuppe 2011-07-01 19:50:42 UTC
Resolving as fixed, no unit tests have been written.

Bug 147

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-10 14:20:30 UTC
!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
Comment 1 Markus Alexander Kuppe 2011-06-14 09:04:14 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-06-14 09:04:17 UTC
Created attachment 49 [details]
mylyn/context/zip

Bug 148

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-14 09:10:28 UTC
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
Comment 1 Markus Alexander Kuppe 2011-06-20 13:27:35 UTC
Added b) in jar loading to util.SimpleFilenameToStream
Comment 2 Markus Alexander Kuppe 2011-06-20 13:27:37 UTC
Created attachment 50 [details]
mylyn/context/zip

Bug 149

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED WORKSFORME    
Severity: major CC: simon
Priority: P2    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2011-06-20 17:28:34 UTC
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.
Comment 1 Leslie Lamport 2011-06-20 17:37:55 UTC
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.
Comment 2 Leslie Lamport 2011-06-21 12:40:45 UTC
The problem seems to have gone away when I restarted the Toolbox.  I can no longer produce it.

Bug 150

Summary: Toolbox not asking for approval to run TLC when spec has been modified
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2011-06-20 17:54:56 UTC
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.)
Comment 1 Markus Alexander Kuppe 2011-07-14 17:41:15 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-14 17:41:16 UTC
Created attachment 70 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-07-20 11:04:21 UTC
Model editors should be saved implicitly. Only a dirty spec editor should raise a save dialog.
Comment 4 Markus Alexander Kuppe 2011-07-20 11:51:01 UTC
Fix released to HEAD
(Raise save dialog for dirty spec editor)
Comment 5 Markus Alexander Kuppe 2011-07-20 11:51:04 UTC
Created attachment 76 [details]
mylyn/context/zip

Bug 151

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-20 21:13:38 UTC
Parsing ~70k lines of TLC output takes hours.
Comment 1 Markus Alexander Kuppe 2011-07-01 19:48:32 UTC
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)
Comment 2 Markus Alexander Kuppe 2011-07-01 19:48:38 UTC
Created attachment 53 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-07-01 20:16:41 UTC
*** Bug 90 has been marked as a duplicate of this bug. ***

Bug 152

Summary: Improve keyboard experience
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-21 08:16:53 UTC
F11: Launch currently active model check
Comment 1 Markus Alexander Kuppe 2011-07-05 15:23:26 UTC
F11 added
Comment 2 Markus Alexander Kuppe 2011-07-05 15:23:28 UTC
Created attachment 56 [details]
mylyn/context/zip

Bug 153

Summary: Turn tla2tool.jar into OSGi bundle
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-06-22 17:16:36 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-06-22 22:32:57 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-06-22 22:32:58 UTC
Created attachment 51 [details]
mylyn/context/zip

Bug 154

Summary: Platform specific bundles [net/filesystem] missing in distribution
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-23 11:02:37 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-01 16:04:36 UTC
.filesystem. has been added to the build. Marking as fixed. Tested on Mac, Win and Linux.
Comment 2 Markus Alexander Kuppe 2011-08-01 16:04:38 UTC
Created attachment 86 [details]
mylyn/context/zip

Bug 155

Summary: Obscure PlusCal translator's command-line options don't work from inside Toolbox
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA ToolsAssignee: Leslie Lamport <lamport>
Status: ASSIGNED ---    
Severity: trivial    
Priority: P5    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2011-06-28 12:59:10 UTC
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.

Bug 156

Summary: Trace Explorer exploration fails with stack overflow
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-06-30 10:11:52 UTC
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
Comment 1 Markus Alexander Kuppe 2011-06-30 10:55:54 UTC
see tla2sany.drivers.Bug156TEStackOverflowTest.testFrontEndParse() for a test case showing this behavior.
Comment 2 Markus Alexander Kuppe 2011-06-30 10:55:56 UTC
Created attachment 52 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-06-30 10:56:35 UTC
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."
Comment 4 Markus Alexander Kuppe 2011-06-30 11:24:57 UTC
TE.tla is written in 
org.lamport.tla.toolbox.tool.tlc.launch.TraceExplorerDelegate.buildForLaunch(ILaunchConfiguration,
 String, IProgressMonitor) starting in line #388.

Bug 157

Summary: Release Toolbox 1.3.2 or 1.4
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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:    

Description Markus Alexander Kuppe 2011-07-01 20:07:27 UTC
This bug is intended as an umbrella bug for the next Toolbox release (it's either 1.3.2 or 1.4).
Comment 1 Markus Alexander Kuppe 2011-07-01 20:08:50 UTC
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
Comment 2 Markus Alexander Kuppe 2011-07-01 20:14:26 UTC
Adding release stoppers
Comment 3 Markus Alexander Kuppe 2011-10-17 14:11:27 UTC
Done already

Bug 158

Summary: Run distributed TLC from Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-01 20:33:30 UTC
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...).
Comment 1 Markus Alexander Kuppe 2011-07-06 20:54:52 UTC
Fix released to HEAD

Bug 159

Summary: NPE in NewSpecWizard job
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-06 10:03:44 UTC
!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)
Comment 1 Markus Alexander Kuppe 2011-07-06 10:07:03 UTC
Fix released to HEAD
(check for valid rootfilename before running job)
Comment 2 Markus Alexander Kuppe 2011-07-06 10:07:04 UTC
Created attachment 57 [details]
mylyn/context/zip

Bug 160

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-06 12:16:57 UTC
!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
Comment 1 Leslie Lamport 2011-07-07 00:18:41 UTC
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.

Bug 161

Summary: Serve TLCWorker via Java Webstart
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-06 18:05:13 UTC
Making the TLCWorker app available via Java Webstart simplifies deployment in (user) scripts.
Comment 1 Markus Alexander Kuppe 2011-07-06 20:50:47 UTC
Released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-06 20:50:49 UTC
Created attachment 59 [details]
mylyn/context/zip

Bug 162

Summary: Bootstrap JRE via Java Webstart
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: Windows   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-06 22:37:09 UTC
On Windows systems the browser can be used to bootstrap a JRE.
Comment 1 Markus Alexander Kuppe 2011-07-07 14:04:02 UTC
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)

Bug 163

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-07 10:52:43 UTC
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
Comment 1 Markus Alexander Kuppe 2011-07-07 15:51:31 UTC
Fix released to HEAD
(Lesson confirmed: never ever use File in your application, use InputStream instead)
Comment 2 Markus Alexander Kuppe 2011-07-07 15:51:32 UTC
Created attachment 60 [details]
mylyn/context/zip

Bug 164

Summary: Add custom system properties to TLCServer process launched from within Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-07 11:14:38 UTC
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
Comment 1 Markus Alexander Kuppe 2011-07-08 09:56:32 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-08 09:56:35 UTC
Created attachment 61 [details]
mylyn/context/zip

Bug 165

Summary: Startup exception/crash due to invalid thread access
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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 Markus Alexander Kuppe 2011-07-07 12:09:27 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-07-25 14:38:58 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-25 14:39:04 UTC
Created attachment 81 [details]
mylyn/context/zip

Bug 166

Summary: Interesting Obligations view: Could not create the view: Subclassing not allowed
Product: TLA+ Toolbox Reporter: Loïc FEJOZ <loic>
Component: TLA+ EditorAssignee: 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

Description Loïc FEJOZ 2011-07-07 15:39:26 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-07-14 16:05:35 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-14 16:05:39 UTC
Created attachment 69 [details]
mylyn/context/zip

Bug 167

Summary: User defined block size in TLC distributed mode
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-09 15:51:10 UTC
A user may wish to define a custom block size for the amount of states that are assigned a worker in distributed mode.
Comment 1 Markus Alexander Kuppe 2011-07-09 17:43:54 UTC
Functor like API added for user defined code.
Comment 2 Markus Alexander Kuppe 2011-07-09 17:43:56 UTC
Created attachment 62 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-07-11 15:32:32 UTC
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 ----
Comment 4 Markus Alexander Kuppe 2011-07-14 10:44:00 UTC
Fix released to HEAD
Comment 5 Markus Alexander Kuppe 2011-07-14 10:44:01 UTC
Created attachment 67 [details]
mylyn/context/zip

Bug 168

Summary: Statistics in distributed mode show incorrect values
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-11 14:59:49 UTC
StatesGenerated does not show correct value.
Comment 1 Markus Alexander Kuppe 2011-07-11 15:08:22 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-11 15:08:23 UTC
Created attachment 63 [details]
mylyn/context/zip

Bug 169

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-12 10:24:44 UTC
In cases with few workers a single worker may get assigned to many states at once.
Comment 1 Markus Alexander Kuppe 2011-07-14 10:42:19 UTC
Fix released to HEAD (bug #171 makes it even less likely)
Comment 2 Markus Alexander Kuppe 2011-07-14 10:42:20 UTC
Created attachment 66 [details]
mylyn/context/zip

Bug 170

Summary: Handling disconnecting workers should not exit model checking
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA ToolsAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: minor    
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-12 20:02:39 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-08 20:40:37 UTC
Fixed in HEAD

Bug 171

Summary: Assign block size (=new states) dynamically
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-13 11:16:50 UTC
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."
Comment 1 Markus Alexander Kuppe 2011-07-14 09:39:30 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-14 09:39:33 UTC
Created attachment 64 [details]
mylyn/context/zip

Bug 172

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-14 10:23:46 UTC
The "model checking results" tab does not 
format start or end time according to the systems current locale. Nor 
does it show the duration.
Comment 1 Markus Alexander Kuppe 2011-07-14 10:28:28 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-14 10:28:29 UTC
Created attachment 65 [details]
mylyn/context/zip

Bug 173

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-18 10:23:07 UTC
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.

Bug 174

Summary: [UI] Better report distributed model run
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-19 13:44:28 UTC
A distributed model should report status on the model checker page
Comment 1 Markus Alexander Kuppe 2011-07-19 13:48:57 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-19 13:48:58 UTC
Created attachment 73 [details]
mylyn/context/zip

Bug 175

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-19 21:20:09 UTC
Deadlock in DiskStateQueue if subset of workers die (disconnect) during model run
Comment 1 Markus Alexander Kuppe 2011-08-03 16:02:38 UTC
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
Comment 2 Markus Alexander Kuppe 2011-08-03 17:31:57 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-08-03 17:37:40 UTC
Fix released to HEAD
Comment 4 Markus Alexander Kuppe 2011-08-03 17:37:41 UTC
Created attachment 92 [details]
mylyn/context/zip
Comment 5 Markus Alexander Kuppe 2011-08-03 18:21:18 UTC
Argh, not done yet.
Comment 6 Markus Alexander Kuppe 2011-08-03 18:46:57 UTC
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.
Comment 7 Markus Alexander Kuppe 2011-08-03 22:11:52 UTC
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.
Comment 8 Markus Alexander Kuppe 2011-08-11 09:10:09 UTC
Implemented the timer thread mentioned in comment #7.
Comment 9 Markus Alexander Kuppe 2011-08-11 09:10:10 UTC
Created attachment 94 [details]
mylyn/context/zip

Bug 176

Summary: NegativeArraySizeException with StateQueue
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-20 10:38:45 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-07-20 10:47:43 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-20 10:47:44 UTC
Created attachment 74 [details]
mylyn/context/zip

Bug 177

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 ComponentAssignee: 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.

Description Markus Alexander Kuppe 2011-07-20 10:51:53 UTC
The diameter statistic is broken in distributed mode.
Comment 1 Markus Alexander Kuppe 2011-07-20 10:52:50 UTC
Created attachment 75 [details]
screenshot of the model result page showing non-monoton diameter
Comment 2 Markus Alexander Kuppe 2011-07-20 12:38:03 UTC
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)."
Comment 3 Markus Alexander Kuppe 2011-07-25 15:39:42 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-07-26 16:51:44 UTC
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.
Comment 5 Markus Alexander Kuppe 2011-07-27 14:10:07 UTC
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.
Comment 6 Markus Alexander Kuppe 2011-07-27 15:29:08 UTC
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?
Comment 7 Markus Alexander Kuppe 2011-07-28 15:15:08 UTC
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.
Comment 8 Markus Alexander Kuppe 2011-08-02 10:32:10 UTC
Created attachment 87 [details]
Adds a depth field to _each_ state to store the states height in the state tree.
Comment 9 Markus Alexander Kuppe 2011-08-02 10:35:01 UTC
Created attachment 88 [details]
A state tree of height 8 where TLCTrace#getLevel() correctly reports the level.
Comment 10 Markus Alexander Kuppe 2011-08-02 10:36:46 UTC
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.
Comment 11 Markus Alexander Kuppe 2011-08-03 10:59:56 UTC
Added TLCTrace#getLevelForReporting() to assure level reported monotonically increments
Comment 12 Markus Alexander Kuppe 2011-08-03 14:36:56 UTC
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.

Bug 178

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-20 10:54:38 UTC
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."
Comment 1 Markus Alexander Kuppe 2011-07-26 12:45:39 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-07-26 12:45:43 UTC
Created attachment 82 [details]
mylyn/context/zip

Bug 179

Summary: Out of memory exception in TLCServer with many workers
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: lamport, simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-20 10:56:58 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-08-03 14:22:18 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-08-03 14:23:27 UTC
Adding Leslie for input on comment #1

Bug 180

Summary: TLCServer exists immediately reporting success when multiple workers connect simultaneously
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-20 15:45:33 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-20 19:26:08 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-20 19:26:10 UTC
Created attachment 77 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-07-21 09:17:33 UTC
Turns out this is a regression caused by bug #176, thus reverting.
Comment 4 Markus Alexander Kuppe 2011-07-21 09:17:35 UTC
Created attachment 78 [details]
mylyn/context/zip

Bug 181

Summary: TLC error messages not shown in Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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:    

Description Markus Alexander Kuppe 2011-07-21 09:59:11 UTC
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."
Comment 1 Markus Alexander Kuppe 2011-07-21 09:59:22 UTC
@!@!@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 @!@!@
Comment 2 Markus Alexander Kuppe 2011-07-25 12:39:15 UTC
Fixed in HEAD

Bug 182

Summary: TLC user output not shown in Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-21 14:16:32 UTC
-------------------------------- 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.
Comment 1 Markus Alexander Kuppe 2011-07-21 14:20:31 UTC
Fix released to HEAD

Enhancement bug #151 unveiled a one-offset bug in TagBasedTLCAnalyzer.
Comment 2 Markus Alexander Kuppe 2011-07-21 14:20:32 UTC
Created attachment 79 [details]
mylyn/context/zip

Bug 183

Summary: Startup exception due to invalid thread access
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-25 11:22:04 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-07-25 11:23:13 UTC
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."
Comment 2 Markus Alexander Kuppe 2011-07-25 13:13:02 UTC
Fix released to HEAD
Comment 3 Markus Alexander Kuppe 2011-07-25 13:13:03 UTC
Created attachment 80 [details]
mylyn/context/zip
Comment 4 Markus Alexander Kuppe 2011-07-26 09:33:28 UTC
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

Bug 184

Summary: Trying to open a TLC model while the prover is running crashes the Toolbox
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2011-07-27 00:46:38 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-07-27 13:54:53 UTC
I fail to reproduce this on either Win, Mac or Linux. Leslie please outline the steps and attach the corresponding spec/model.
Comment 2 Leslie Lamport 2014-01-27 22:29:50 UTC
This is a test comment.

Bug 185

Summary: TLCServer does not accept -checkpoint parameter
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-07-28 19:32:51 UTC
TLCServer/TLCApp does not know about the -checkpoint parameter and thus only supports checkpointing every 30 minutes.
Comment 1 Markus Alexander Kuppe 2011-07-28 19:35:21 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-07-28 19:35:22 UTC
Created attachment 83 [details]
mylyn/context/zip

Bug 186

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: minor CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-07-29 09:32:06 UTC
http://maven.apache.org/general.html#encoding-warning
Comment 1 Markus Alexander Kuppe 2011-07-29 09:36:17 UTC
Fix released to HEAD

Bug 187

Summary: Toolbox ignores states/ subfolder used by TLCServer to store checkpoint data
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-01 11:33:10 UTC
Checkpoint data written by distributed TLC cannot be selected in Toolbox (unless manually copied from subfolder).
Comment 1 Markus Alexander Kuppe 2011-08-01 12:05:30 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-08-01 12:05:31 UTC
Created attachment 84 [details]
mylyn/context/zip

Bug 188

Summary: Distributed TLC incorrectly reports states recovered
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-01 12:03:47 UTC
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 @!@!@
Comment 1 Markus Alexander Kuppe 2011-08-01 13:03:31 UTC
Fix released to HEAD
(changed tlc2.output.MP.printMessage(int, String) parameters)
Comment 2 Markus Alexander Kuppe 2011-08-01 13:03:34 UTC
Created attachment 85 [details]
mylyn/context/zip

Bug 189

Summary: Run user script prior to TLC model checker
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-02 13:33:35 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-03 08:36:32 UTC
context/changes for UI part:
An additional editable input text box with an optional file chooser dialog
Comment 2 Markus Alexander Kuppe 2011-08-03 08:36:34 UTC
Created attachment 90 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-03 12:01:23 UTC
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?
Comment 4 Markus Alexander Kuppe 2011-08-03 12:03:31 UTC
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.

Bug 190

Summary: Startup NPE in TokenSpec.findTokenSpecs()
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-03 11:15:14 UTC
!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)
Comment 1 Markus Alexander Kuppe 2011-08-03 14:13:52 UTC
 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.
Comment 2 Markus Alexander Kuppe 2011-08-03 14:13:54 UTC
Created attachment 91 [details]
mylyn/context/zip

Bug 191

Summary: Remove useless preferences from preference page
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-05 08:06:50 UTC
These preferences are currently useless/meaningless in the scope of the Toolbox:

General > Compare/Patch
General > Appearance > Colors and Fonts > Text Compare
Comment 1 Markus Alexander Kuppe 2011-08-05 13:02:22 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-08-05 13:02:26 UTC
Created attachment 93 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-08 14:24:57 UTC
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.

Bug 192

Summary: Add distributed TLC documentation to HTML Toolbox help
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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    

Description Markus Alexander Kuppe 2011-08-05 10:06:35 UTC
Add distributed TLC documentation to HTML Toolbox help
Comment 1 Markus Alexander Kuppe 2011-10-17 14:10:54 UTC
Done a while ago

Bug 193

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 ComponentAssignee: 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.

Description Markus Alexander Kuppe 2011-08-05 10:08:24 UTC
Update site location has be decided on prior to the next release. The update site doesn't have to be created though.
Comment 1 Markus Alexander Kuppe 2011-08-16 10:54:25 UTC
- 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
Comment 2 Markus Alexander Kuppe 2011-08-16 10:54:28 UTC
Created attachment 99 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-16 12:23:02 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-08-16 12:23:12 UTC
Fix released to HEAD.

Bug 194

Summary: Trusted SSL certificate needed to sign bundles for Java webstart
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: 1.3   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-08-05 10:12:19 UTC
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).

Bug 195

Summary: startup deadlock while determining spec size
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-11 17:14:31 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-08-11 17:17:12 UTC
Released thread decoupling to HEAD
Comment 2 Markus Alexander Kuppe 2011-08-11 17:17:13 UTC
Created attachment 95 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2012-01-25 22:14:18 UTC
Solved (a while ago)

Bug 196

Summary: Simplify IDE workspace provisioning
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-11 17:18:47 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-11 17:22:33 UTC
Released .target to HEAD
Comment 2 Markus Alexander Kuppe 2011-08-11 17:22:33 UTC
Created attachment 96 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-16 11:59:16 UTC
Fixed in HEAD

Bug 197

Summary: java.lang.NumberFormatException: in WorkspaceSpecManager.getMostRecentlyOpenedSpec
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-13 18:17:47 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-08-15 10:24:47 UTC
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...
Comment 2 Markus Alexander Kuppe 2011-08-15 10:24:50 UTC
Created attachment 97 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-15 11:24:26 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-08-15 11:24:28 UTC
Created attachment 98 [details]
mylyn/context/zip

Bug 198

Summary: "Error while loading manipulator" when trying to update Toolbox on Mac
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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: ---

Description Markus Alexander Kuppe 2011-08-16 17:12:18 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-08-16 17:18:24 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-08-30 19:36:03 UTC
Fix released to HEAD

Bug 199

Summary: Add update scheduler to toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-24 15:33:16 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-24 15:46:33 UTC
Basic plumbing done, user documentation missing (do we need documentation for update)?
Comment 2 Markus Alexander Kuppe 2011-08-24 15:46:34 UTC
Created attachment 101 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-08-30 19:34:53 UTC
Fix released to HEAD

Bug 200

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-25 11:30:18 UTC
The files are not needed by the Toolbox at runtime and thus should be omitted from the zip files.
Comment 1 Markus Alexander Kuppe 2011-08-25 12:59:31 UTC
Fixed in HEAD
pom.properties (and pom.xml) are omitted from zip files.
Comment 2 Markus Alexander Kuppe 2011-08-25 12:59:34 UTC
Created attachment 102 [details]
mylyn/context/zip

Bug 201

Summary: Remove javacc build step from ant build
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-25 13:33:18 UTC
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.)"
Comment 1 Markus Alexander Kuppe 2011-08-25 13:34:48 UTC
Removed in HEAd
Comment 2 Markus Alexander Kuppe 2011-08-25 13:34:49 UTC
Created attachment 103 [details]
mylyn/context/zip

Bug 202

Summary: Optional dependencies broken in recent Tycho build
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-27 14:03:19 UTC
https://bugs.eclipse.org/355947
Comment 1 Markus Alexander Kuppe 2011-08-27 14:06:11 UTC
Fixed in HEAD as per https://bugs.eclipse.org/bugs/show_bug.cgi?id=355947#c4
Comment 2 Markus Alexander Kuppe 2011-08-27 14:06:12 UTC
Created attachment 105 [details]
mylyn/context/zip

Bug 203

Summary: Rename Maven build output zip files to include version name
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-30 10:12:20 UTC
rename org.lamport.tla.toolbox.product.product-linux...zip to TLAToolbox-1.3.2-linux...zip
Comment 1 Markus Alexander Kuppe 2011-08-30 19:33:37 UTC
Fixed in HEAD
Comment 2 Markus Alexander Kuppe 2011-08-30 19:33:43 UTC
Created attachment 107 [details]
mylyn/context/zip

Bug 204

Summary: Add refresh command to sync spec/model with filesystem
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-08-30 18:26:34 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-08-30 18:46:10 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-08-30 18:46:12 UTC
Created attachment 106 [details]
mylyn/context/zip

Bug 205

Summary: TLC stops if Queue Size grows to more than 2^31
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLC ComponentAssignee: 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

Description Chris Newcombe 2011-09-10 20:26:28 UTC
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 @!@!@
Comment 1 Markus Alexander Kuppe 2011-09-12 17:25:01 UTC
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?
Comment 2 Markus Alexander Kuppe 2011-09-13 15:34:03 UTC
tlc2.tool.queue.StateQueue.len has been converted from int to long.
Comment 3 Markus Alexander Kuppe 2011-09-13 15:34:07 UTC
Created attachment 111 [details]
mylyn/context/zip
Comment 4 Markus Alexander Kuppe 2011-09-15 20:01:41 UTC
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/
Comment 5 Markus Alexander Kuppe 2011-09-20 10:51:45 UTC
Separated long running tlc2.tool.queue.DiskStateQueueTest from short/smoke tests to keep test execution time minimal.
Comment 6 Markus Alexander Kuppe 2011-09-26 17:12:11 UTC
Fix released to HEAD. Follow up "negative seek offset" bug is tracked as bug #210.
Comment 7 Markus Alexander Kuppe 2011-09-26 17:12:12 UTC
Created attachment 113 [details]
mylyn/context/zip

Bug 206

Summary: DND does not work in TLA editor
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-09-12 10:25:38 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-09-12 11:11:36 UTC
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)
Comment 2 Markus Alexander Kuppe 2011-09-12 11:12:22 UTC
https://bugs.eclipse.org/287486#c5 outlines a viable fix.
Comment 3 Markus Alexander Kuppe 2011-09-12 11:15:24 UTC
Fix released to HEAD
Comment 4 Markus Alexander Kuppe 2011-09-12 11:15:25 UTC
Created attachment 109 [details]
mylyn/context/zip

Bug 207

Summary: Linear growth factor in MemStateQueue quickly exceeds heap space
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-09-12 12:38:07 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-09-12 17:23:02 UTC
The capacity of MemStateQueue has be change to grow with (oldLength * 4) / 3 + 1).
Comment 2 Markus Alexander Kuppe 2011-09-12 17:23:04 UTC
Created attachment 110 [details]
mylyn/context/zip

Bug 208

Summary: Bug at ResourceHelper line 1477
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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: ---

Description Markus Alexander Kuppe 2011-09-19 10:52:39 UTC
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
Comment 1 Leslie Lamport 2012-02-11 21:39:04 UTC
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.

Bug 209

Summary: tlc2.util.RandomAccessFile maintains read/write statistics which are never used
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-09-22 14:15:43 UTC
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().
Comment 1 Markus Alexander Kuppe 2011-09-22 14:17:43 UTC
Fixed by changing class hierarchy to directly inherit from java.io.RandomAccessFile instead of tlc2.util.RandomAccessFile.
Comment 2 Markus Alexander Kuppe 2011-09-22 14:17:44 UTC
Created attachment 112 [details]
mylyn/context/zip

Bug 210

Summary: java.IO.Exception: negative seek offset
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLC ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-09-26 17:07:25 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-09-26 17:42:32 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-09-26 20:40:37 UTC
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)
Comment 3 Markus Alexander Kuppe 2011-09-27 15:44:58 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-09-27 15:45:04 UTC
Created attachment 114 [details]
mylyn/context/zip
Comment 5 Markus Alexander Kuppe 2011-10-10 09:56:41 UTC
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 @!@!@
Comment 6 Markus Alexander Kuppe 2011-10-10 09:57:49 UTC
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
Comment 7 Markus Alexander Kuppe 2011-11-29 00:14:59 UTC
MidEntry turned negative:
================
loEntry: -2147483648
midEntry: -2147483390
hiEntry: -2147482624
loVal: 9223361181405976355
hiVal: 9223365871748060008
Comment 8 Markus Alexander Kuppe 2011-11-29 17:09:00 UTC
Fix released to HEAD
Comment 9 Markus Alexander Kuppe 2011-11-29 17:09:03 UTC
Created attachment 132 [details]
mylyn/context/zip

Bug 211

Summary: Error when looking for PlusCal algorithm
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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.

Description Leslie Lamport 2011-09-30 11:50:23 UTC
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.
Comment 1 Leslie Lamport 2011-09-30 11:55:10 UTC
Created attachment 115 [details]
The TLA spec
Comment 2 Leslie Lamport 2011-09-30 11:56:24 UTC
Created attachment 116 [details]
The Console output.
Comment 3 Leslie Lamport 2011-09-30 16:54:03 UTC
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.

Bug 212

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 ComponentAssignee: 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

Description Chris Newcombe 2011-10-04 01:56:24 UTC
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
Comment 1 Markus Alexander Kuppe 2011-10-04 18:06:57 UTC
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
Comment 2 Markus Alexander Kuppe 2011-10-06 20:57:34 UTC
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
Comment 3 Markus Alexander Kuppe 2011-10-06 20:59:51 UTC
[0] https://tla.msr-inria.inria.fr/tlatoolbox/ci/products/
Comment 4 Markus Alexander Kuppe 2011-10-07 17:48:00 UTC
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!
Comment 5 Markus Alexander Kuppe 2011-10-07 18:47:13 UTC
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.
Comment 6 Markus Alexander Kuppe 2011-10-07 18:54:54 UTC
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.
Comment 7 Markus Alexander Kuppe 2011-10-07 18:54:55 UTC
Created attachment 117 [details]
mylyn/context/zip

Bug 213

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-10-04 15:10:31 UTC
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).
Comment 1 Markus Alexander Kuppe 2011-10-04 15:11:58 UTC
FWIW: No code appears to exist that guards TLC from using 0/zero as a valid fingerprint
Comment 2 Markus Alexander Kuppe 2011-10-04 15:21:58 UTC
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.
Comment 3 Markus Alexander Kuppe 2011-10-06 20:57:45 UTC
[0] https://tla.msr-inria.inria.fr/tlatoolbox/ci/products/

Bug 214

Summary: Performance bottleneck in checkpointing and .fp file roll-over
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLC ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: major CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-10-09 10:35:12 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-14 21:10:54 UTC
This bottleneck might be the cause for tlc2.tool.fp.DiskFPSet.beginChkpt() not doing any checkpointing

Bug 215

Summary: Make -fpbits parameter available in HowToRun section of model editor
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLC ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-09 11:32:16 UTC
Add UI for the newly added fpbits parameter (see bug #210).
Comment 1 Markus Alexander Kuppe 2011-10-09 12:00:47 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-10-09 12:00:48 UTC
Created attachment 118 [details]
mylyn/context/zip

Bug 216

Summary: "-1 workers registered" in TLC distributed mode
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-10 10:02:00 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-12-06 20:01:32 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-12-06 20:01:35 UTC
Created attachment 137 [details]
mylyn/context/zip

Bug 217

Summary: Deactivate "Model Overview" worker count if distributed is on
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-10-10 10:06:58 UTC
Worker count has no effect in distributed TLC, thus it should be deactivated if distributed mode is turned on.

Bug 218

Summary: NPE in TLCWorker KeepAlive Timer task
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-13 15:58:00 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-10-13 15:59:23 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-10-13 15:59:24 UTC
Created attachment 119 [details]
mylyn/context/zip

Bug 219

Summary: NPE in TLCServer when TLCWorker disconnect unexpectedly
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-13 16:00:29 UTC
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)
Comment 1 Markus Alexander Kuppe 2011-10-13 21:37:38 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-10-13 21:37:41 UTC
Created attachment 120 [details]
mylyn/context/zip

Bug 220

Summary: Toolbox not reporting TLC error.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2011-10-17 12:17:24 UTC
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.
Comment 1 Leslie Lamport 2011-10-17 12:19:37 UTC
Created attachment 121 [details]
The .toolbox directory
Comment 2 Leslie Lamport 2011-10-17 12:21:00 UTC
Created attachment 122 [details]
The relevant part of the Eclipse console.

I was running the Toolbox under Eclipse
Comment 3 Leslie Lamport 2011-10-17 12:22:03 UTC
Created attachment 123 [details]
the Toolbox's TLC Console
Comment 4 Leslie Lamport 2011-10-17 12:24:36 UTC
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

 

=============================================================================
Comment 5 Leslie Lamport 2011-10-17 12:31:49 UTC
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.
Comment 6 Markus Alexander Kuppe 2011-10-17 15:10:23 UTC
Hi,

this appears to be a duplicate of bug #145. Both stack traces look the same. Thus, marking as a depends.

Bug 221

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-17 14:01:28 UTC
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] >>
"
Comment 1 Markus Alexander Kuppe 2011-10-17 14:02:01 UTC
Created attachment 124 [details]
Toolbox Screenshot
Comment 2 Markus Alexander Kuppe 2011-10-17 14:03:16 UTC
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."
Comment 3 Markus Alexander Kuppe 2011-10-17 14:17:29 UTC
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.
Comment 4 Markus Alexander Kuppe 2011-11-23 20:45:47 UTC
Concurrent writes to ToolIO.out and ToolIO.err are not synchronized and will be interleaved randomly.
Comment 5 Markus Alexander Kuppe 2011-11-24 00:10:44 UTC
Released a change to HEAD that makes all console writes go to ToolIO.out. This prevents interleaved output.
Comment 6 Markus Alexander Kuppe 2011-11-24 00:10:47 UTC
Created attachment 130 [details]
mylyn/context/zip
Comment 7 Markus Alexander Kuppe 2011-11-28 23:57:06 UTC
Fix released to HEAD

Bug 222

Summary: java.io.IOException: Bad file descriptor in distributed mode
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: normal CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: Linux   
Target Version: ---

Description Markus Alexander Kuppe 2011-10-17 14:08:11 UTC
@!@!@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)
Comment 1 Markus Alexander Kuppe 2011-12-07 17:18:43 UTC
Master and workers are:
	Ubuntu 11.04 Natty Narwhal
	Sun Java SE 1.6.0_26.b03 
	Java HotSpot 20.1-b02 mixed-mode
Comment 2 Markus Alexander Kuppe 2011-12-07 17:20:06 UTC
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)

Bug 223

Summary: Garbage in the error message shown in Toolbox console
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-10-20 11:02:31 UTC
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 @!@!@
Comment 1 Markus Alexander Kuppe 2011-10-20 11:03:08 UTC
Created attachment 126 [details]
Screenshot

Bug 224

Summary: Add reusable TLCWorker process (based on OSGi)
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-10-24 13:51:37 UTC
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.

Bug 225

Summary: Minor problem in Toolbox reporting of "Current status"
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Leslie Lamport <lamport>
Status: ASSIGNED ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: Windows Vista   
Target Version: ---

Description Leslie Lamport 2011-10-29 10:11:33 UTC
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 @!@!@

Bug 226

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2011-11-13 13:22:20 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-11-13 13:22:58 UTC
https://bugs.eclipse.org/353503 tracks the underlying issue upstream. Unfortunately, it has only been fixed in Eclipse 3.7.
Comment 2 Markus Alexander Kuppe 2011-11-13 13:23:37 UTC
Created attachment 127 [details]
Screenshot
Comment 3 Markus Alexander Kuppe 2011-12-14 16:58:33 UTC
Fix released to HEAD
Comment 4 Markus Alexander Kuppe 2011-12-14 16:58:48 UTC
Created attachment 140 [details]
mylyn/context/zip

Bug 227

Summary: Canceling change to assignment of value to CONSTANT does not cancel
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2011-11-22 05:51:35 UTC
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.
Comment 1 Leslie Lamport 2011-11-22 20:39:09 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-11-22 23:43:19 UTC
Fix released to HEAD

Check canceled flag in org.lamport.tla.toolbox.tool.tlc.ui.wizard.AssignmentWizardPage.dispose()
Comment 3 Markus Alexander Kuppe 2011-11-22 23:43:21 UTC
Created attachment 128 [details]
mylyn/context/zip

Bug 228

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 ComponentAssignee: 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

Description Leslie Lamport 2011-11-22 22:01:12 UTC
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.
Comment 1 Leslie Lamport 2011-11-23 00:53:21 UTC
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.
Comment 2 Markus Alexander Kuppe 2011-11-23 18:42:39 UTC
Fix released to HEAD

If fpBits equals 0, a DiskFPSet will be used. Else if fpBits > 0, a MultiFPSet.
Comment 3 Markus Alexander Kuppe 2011-11-23 18:42:44 UTC
Created attachment 129 [details]
mylyn/context/zip

Bug 229

Summary: Hide certain error codes from TLC errors view
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-11-28 22:58:46 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-11-28 23:55:01 UTC
Released to HEAD
Comment 2 Markus Alexander Kuppe 2011-11-28 23:55:04 UTC
Created attachment 131 [details]
mylyn/context/zip

Bug 230

Summary: Toolbox not handling multiple errors reported by PlusCal in a single message.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: ASSIGNED ---    
Severity: minor CC: simon
Priority: P4    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2011-11-29 21:05:01 UTC
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.

Bug 231

Summary: TLCWorker handles OutOfMemoryError like a model exception
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-11-29 22:48:06 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-06 22:08:11 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-12-06 22:08:13 UTC
Created attachment 139 [details]
mylyn/context/zip

Bug 232

Summary: Unexport all remotly available UnicastRemoteObjs to gracefully shutdown TLCServer
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-01 22:16:28 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-01 22:17:54 UTC
Created attachment 133 [details]
mylyn/context/zip

Bug 233

Summary: Find Uses command throwing a null pointer exception
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2011-12-02 23:09:08 UTC
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)
Comment 1 Leslie Lamport 2011-12-02 23:10:39 UTC
Created attachment 134 [details]
The offending spec
Comment 2 Markus Alexander Kuppe 2011-12-03 00:39:28 UTC
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)
Comment 3 Leslie Lamport 2011-12-03 00:57:34 UTC
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
Comment 4 Markus Alexander Kuppe 2011-12-03 01:40:05 UTC
Created attachment 135 [details]
Determine ExprNode array size depending on otherarm case
Comment 5 Markus Alexander Kuppe 2011-12-03 01:40:10 UTC
Created attachment 136 [details]
mylyn/context/zip
Comment 6 Markus Alexander Kuppe 2011-12-03 18:35:35 UTC
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;
Comment 7 Leslie Lamport 2011-12-04 20:28:24 UTC
Fixed, essentially as indicated by Markus's preceding comment.  See the comments in the code for an explanation of the bug.

Bug 234

Summary: Potential race condition in StateQueue synchronization
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-06 21:59:36 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-06 22:06:50 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-12-06 22:06:52 UTC
Created attachment 138 [details]
mylyn/context/zip

Bug 235

Summary: [releng] Define 3rd party (OSGi) dependencies in .target definition file only
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-13 20:29:38 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-14 17:00:45 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2011-12-14 17:00:47 UTC
Created attachment 141 [details]
mylyn/context/zip

Bug 236

Summary: Overflow in tlc2.tool.ModelChecker.reportSuccess() causing negative "calculated" probability
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-16 18:24:59 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-16 21:50:06 UTC
Released to master
Comment 2 Markus Alexander Kuppe 2011-12-16 21:50:10 UTC
Created attachment 142 [details]
mylyn/context/zip

Bug 237

Summary: Expose TLC's "-fp" parameter in Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-19 21:43:53 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-19 23:12:00 UTC
Released (preliminary) version to HEAD
Comment 2 Markus Alexander Kuppe 2011-12-19 23:12:04 UTC
Created attachment 143 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-12-20 00:32:17 UTC
Reworked with spinner instead of input box, marking as fixed
Comment 4 Markus Alexander Kuppe 2011-12-20 00:32:23 UTC
Created attachment 144 [details]
mylyn/context/zip

Bug 238

Summary: Add missing TLC parameters to Toolbox UI (dump, gzip, nowarning, terse)
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2011-12-20 18:44:30 UTC
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

Bug 239

Summary: Add back and forward navigation to Toolbox
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Comment 1 Markus Alexander Kuppe 2011-12-20 21:02:01 UTC
Released change for TLAEditor
Comment 2 Markus Alexander Kuppe 2011-12-20 21:02:03 UTC
Created attachment 145 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2011-12-22 21:23:57 UTC
Released support for FormPages to HEAD
Comment 4 Markus Alexander Kuppe 2011-12-22 21:24:19 UTC
Created attachment 146 [details]
mylyn/context/zip

Bug 240

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 ToolsAssignee: 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

Description Markus Alexander Kuppe 2011-12-23 18:12:10 UTC
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.
Comment 1 Markus Alexander Kuppe 2011-12-23 18:19:37 UTC
s/slider/scale
Comment 2 Markus Alexander Kuppe 2012-01-14 21:01:12 UTC
Enhancement released to HEAD (a while ago)
Comment 3 Markus Alexander Kuppe 2012-01-14 21:01:15 UTC
Created attachment 158 [details]
mylyn/context/zip

Bug 241

Summary: Please add keyboard command "Go to matching bracket"
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLA+ EditorAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Chris Newcombe 2011-12-29 02:21:38 UTC
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
Comment 1 Markus Alexander Kuppe 2012-01-26 18:57:14 UTC
Fixed by LL

Bug 242

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2011-12-30 02:19:42 UTC
This overflow causes the in-memory DiskFPSet storage to be flushed to disk on every put call and heavily degrades performance.
Comment 1 Markus Alexander Kuppe 2012-01-03 17:42:32 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-03 17:42:34 UTC
Created attachment 147 [details]
mylyn/context/zip

Bug 243

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-03 16:15:53 UTC
-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.
Comment 1 Markus Alexander Kuppe 2012-01-04 17:29:55 UTC
Enhancement released to HEAD
(No documentation referring to old fpmem found)
Comment 2 Markus Alexander Kuppe 2012-01-04 17:29:59 UTC
Created attachment 149 [details]
mylyn/context/zip

Bug 244

Summary: Expose TLC statistics via Java management extensions (MXBeans)
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-03 16:34:14 UTC
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
Comment 1 Markus Alexander Kuppe 2012-01-03 23:32:28 UTC
Started with stats for DiskFPSet
Comment 2 Markus Alexander Kuppe 2012-01-03 23:32:31 UTC
Created attachment 148 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2012-01-04 21:43:01 UTC
Added ModelChecker metrics showing:

tlc2.tool:type=ModelChecker

with
- distinct states generated
- distinct states generated per min
- states generated
- states generated per  min
- progress
Comment 4 Markus Alexander Kuppe 2012-01-04 21:43:04 UTC
Created attachment 150 [details]
mylyn/context/zip
Comment 5 Markus Alexander Kuppe 2012-01-05 07:17:14 UTC
Changed collecting stats to accept dirty 
reads on distinct generated states counter if FPSet backing store is 
DiskFPSet implementation to reduce lock contention.
Comment 6 Markus Alexander Kuppe 2012-01-05 07:17:16 UTC
Created attachment 151 [details]
mylyn/context/zip
Comment 7 Markus Alexander Kuppe 2012-01-07 03:27:13 UTC
Add worker count

tlc2.tool.ModelCheccker#workerCount
Comment 8 Markus Alexander Kuppe 2012-01-14 20:25:50 UTC
Figured need lock (contention) statistics for:

- StateQueue
- DiskFPSet or tlc2.util.ReadersWriterLock in general

Bug 245

Summary: Add -fpmem parameter to TLCServer
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-07 01:43:38 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-07 02:24:51 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-07 02:24:57 UTC
Created attachment 152 [details]
mylyn/context/zip

Bug 246

Summary: Error: Requested array size exceeds VM limit in DiskFPSet
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-07 16:41:23 UTC
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)
Comment 1 Markus Alexander Kuppe 2012-01-07 17:28:53 UTC
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/
Comment 2 Markus Alexander Kuppe 2012-01-07 17:38:15 UTC
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.
Comment 3 Markus Alexander Kuppe 2012-01-14 20:09:19 UTC
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.
Comment 4 Markus Alexander Kuppe 2012-01-14 20:23:59 UTC
Fixed in HEAD
Comment 5 Markus Alexander Kuppe 2012-01-14 20:24:01 UTC
Created attachment 155 [details]
mylyn/context/zip

Bug 247

Summary: Push TLCRuntime down into tlatools/src/util package
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-09 19:20:04 UTC
TLCRuntime should be pushed down from the Toolbox code into tlatools/src/util.TLCRuntime.
Comment 1 Markus Alexander Kuppe 2012-01-09 19:25:13 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-09 19:25:15 UTC
Created attachment 153 [details]
mylyn/context/zip

Bug 248

Summary: Make TLC print stacktraces when programming error
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-10 17:52:20 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-10 18:05:59 UTC
As part of this ticket, -debug is going to be added to TLCServer#main(String[]).
Comment 2 Markus Alexander Kuppe 2012-01-10 20:06:00 UTC
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(...).
Comment 3 Markus Alexander Kuppe 2012-01-10 20:06:03 UTC
Created attachment 154 [details]
mylyn/context/zip

Bug 249

Summary: Link PlusCal code (via TLA+ to PlusCal mapper) in Toolbox UI
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA ToolsAssignee: 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

Description Markus Alexander Kuppe 2012-01-14 19:51:24 UTC
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."
Comment 1 Markus Alexander Kuppe 2012-01-17 21:35:35 UTC
First step is to persistently store the pcal mapping as part of the spec
Comment 2 Markus Alexander Kuppe 2012-01-18 00:21:16 UTC
The persistent mapping will not survive spec filename (corresponding .tla) renames.
Comment 3 Markus Alexander Kuppe 2012-01-19 00:14:11 UTC
Persistent mapping storage considered done
Comment 4 Markus Alexander Kuppe 2012-01-19 00:14:14 UTC
Created attachment 159 [details]
mylyn/context/zip
Comment 5 Leslie Lamport 2012-01-19 01:13:37 UTC
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.
Comment 6 Markus Alexander Kuppe 2012-01-19 02:10:14 UTC
I cannot reproduce this in my local workspace with the step you mentioned, can you? If yes, please send me your spec.
Comment 7 Markus Alexander Kuppe 2012-02-16 20:01:04 UTC
Fix a while ago

Bug 250

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 ToolsAssignee: 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

Description Markus Alexander Kuppe 2012-01-14 20:41:18 UTC
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
Comment 1 Markus Alexander Kuppe 2012-01-14 20:44:30 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-01-14 20:47:47 UTC
Created attachment 157 [details]
The output of ls -la for the Toolbox metadata directory

Bug 251

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED DUPLICATE    
Severity: critical CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2012-01-15 16:57:14 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-15 18:35:18 UTC
*** This bug has been marked as a duplicate of bug 252 ***

Bug 252

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: critical CC: simon
Priority: P3    
Version: 1.4   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2012-01-15 16:57:35 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-15 18:35:18 UTC
*** Bug 251 has been marked as a duplicate of this bug. ***
Comment 2 Markus Alexander Kuppe 2012-01-17 19:19:42 UTC
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.

Bug 253

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 ToolsAssignee: 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

Description Markus Alexander Kuppe 2012-01-17 21:01:08 UTC
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."
Comment 1 Markus Alexander Kuppe 2012-02-16 22:17:05 UTC
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").
Comment 2 Markus Alexander Kuppe 2012-02-16 22:17:07 UTC
Created attachment 181 [details]
mylyn/context/zip

Bug 254

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-19 02:48:30 UTC
!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)
Comment 1 Markus Alexander Kuppe 2012-01-25 22:58:10 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-01-25 23:06:32 UTC
Fix released to HEAD by not enabling handlers if no active editor could be found.
Comment 3 Markus Alexander Kuppe 2012-01-25 23:06:34 UTC
Created attachment 168 [details]
mylyn/context/zip

Bug 255

Summary: Release Toolbox/TLC/PlusCal 1.4.1 release
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-19 17:53:31 UTC
- 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
Comment 1 Markus Alexander Kuppe 2012-01-19 17:55:36 UTC
Created attachment 160 [details]
mylyn/context/zip
Comment 2 Markus Alexander Kuppe 2012-01-20 20:14:28 UTC
Done
Comment 3 Markus Alexander Kuppe 2012-01-20 20:14:30 UTC
Created attachment 164 [details]
mylyn/context/zip

Bug 256

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-19 20:52:12 UTC
!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 ...
Comment 1 Markus Alexander Kuppe 2012-01-19 20:59:32 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-19 20:59:34 UTC
Created attachment 161 [details]
mylyn/context/zip

Bug 257

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-19 21:09:23 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-19 22:44:30 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-19 22:44:34 UTC
Created attachment 162 [details]
mylyn/context/zip

Bug 258

Summary: Replace worker input field with spinner
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-20 00:06:11 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-20 19:24:38 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-20 19:24:41 UTC
Created attachment 163 [details]
mylyn/context/zip

Bug 259

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-20 20:16:47 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-25 23:00:32 UTC
Fix released to HEAD for all handlers that need an active editor to be present
Comment 2 Markus Alexander Kuppe 2012-01-25 23:00:35 UTC
Created attachment 167 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2012-01-25 23:02:46 UTC
Arg, meant to close bug #254 instead of this one!
Comment 4 Markus Alexander Kuppe 2012-01-26 00:54:54 UTC
Fix released to HEAD
Comment 5 Markus Alexander Kuppe 2012-01-26 00:54:58 UTC
Created attachment 169 [details]
mylyn/context/zip

Bug 260

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-24 18:37:07 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-25 22:26:20 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-01-25 22:26:21 UTC
Created attachment 166 [details]
mylyn/context/zip

Bug 261

Summary: ProverUI uses foreign preference store causing activation of foreign bundle
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-25 17:47:24 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-01-25 22:19:31 UTC
WONTFIX right now as I have found a way to work around it to address bug #260.
Comment 2 Markus Alexander Kuppe 2012-01-25 22:19:34 UTC
Created attachment 165 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2012-02-14 16:46:22 UTC
Unfortunately we cannot get away with it, because it is creating a cyclic wait graph intermittently.
Comment 4 Markus Alexander Kuppe 2012-02-14 21:04:41 UTC
Fix released to HEAD
Comment 5 Markus Alexander Kuppe 2012-02-14 21:04:48 UTC
Created attachment 178 [details]
mylyn/context/zip

Bug 262

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 ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-01-26 18:48:52 UTC
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)
Comment 1 Markus Alexander Kuppe 2012-01-26 20:35:58 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-26 20:36:01 UTC
Created attachment 170 [details]
mylyn/context/zip

Bug 263

Summary: InvalidThreadAccess exception when installing markers during startup
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-01-27 23:48:42 UTC
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
Comment 1 Markus Alexander Kuppe 2012-01-28 00:30:17 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-01-28 00:30:20 UTC
Created attachment 171 [details]
mylyn/context/zip

Bug 264

Summary: Make TLC bound on cardinality of a set settable by user.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2012-01-31 18:38:58 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-02-16 00:29:52 UTC
*** Bug 274 has been marked as a duplicate of this bug. ***
Comment 2 Markus Alexander Kuppe 2012-03-08 12:54:02 UTC
Enhancement released to HEAD 
+ -maxSetSize parameter for TLC
+ UI on advanced model page (UI probably needs rewording)
Comment 3 Markus Alexander Kuppe 2012-03-08 12:54:04 UTC
Created attachment 184 [details]
mylyn/context/zip
Comment 4 Leslie Lamport 2012-03-22 01:23:34 UTC
This feature is stable and will be released in Version 1.4.3.

Bug 265

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-01 00:26:16 UTC
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).
Comment 1 Markus Alexander Kuppe 2012-02-01 00:33:38 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-02-01 00:33:40 UTC
Created attachment 172 [details]
mylyn/context/zip

Bug 266

Summary: Add (general) preference page to set TLC library path
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-01 17:59:47 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-02-02 17:36:14 UTC
Enhancement released to HEAD

Project specific library path replaces the global preference. Additionally to TLC, the path variable is set for SANY.
Comment 2 Markus Alexander Kuppe 2012-02-02 17:36:17 UTC
Created attachment 173 [details]
mylyn/context/zip

Bug 267

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-03 21:59:35 UTC
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 }
Comment 1 Markus Alexander Kuppe 2012-02-04 01:56:20 UTC
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"
Comment 2 Markus Alexander Kuppe 2012-02-04 01:57:08 UTC
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)
Comment 3 Markus Alexander Kuppe 2012-02-06 21:13:12 UTC
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 @!@!@
Comment 4 Markus Alexander Kuppe 2012-02-06 21:13:41 UTC
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 @!@!@
Comment 5 Markus Alexander Kuppe 2012-02-07 17:32:53 UTC
Added test case
Comment 6 Markus Alexander Kuppe 2012-02-07 17:32:56 UTC
Created attachment 174 [details]
mylyn/context/zip
Comment 7 Markus Alexander Kuppe 2012-02-07 17:59:55 UTC
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 @!@!@
Comment 8 Markus Alexander Kuppe 2012-02-14 16:23:31 UTC
Fix released to HEAD

Bug 268

Summary: GotoMatchingParen markers override ShowUses markers
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-07 23:45:21 UTC
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?"
Comment 1 Markus Alexander Kuppe 2012-02-08 21:25:37 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-02-08 21:25:41 UTC
Created attachment 176 [details]
mylyn/context/zip

Bug 269

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-07 23:47:28 UTC
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."
Comment 1 Markus Alexander Kuppe 2012-02-08 17:03:38 UTC
Bug got most probably introduces with 
revision 17310 - Added hyperlinking of failed assertion locations 
printed by the PlusCal translator.
Comment 2 Markus Alexander Kuppe 2012-02-08 17:04:08 UTC
Fixed in HEAD
Comment 3 Markus Alexander Kuppe 2012-02-08 17:04:11 UTC
Created attachment 175 [details]
mylyn/context/zip

Bug 270

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-13 17:31:46 UTC
!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()
Comment 1 Markus Alexander Kuppe 2012-02-13 17:34:36 UTC
Fix released to HEAD by safeguarding against NPE
(proper fix would IMO guard against Spec#rootFile becoming null in the first place)
Comment 2 Markus Alexander Kuppe 2012-02-13 17:34:38 UTC
Created attachment 177 [details]
mylyn/context/zip

Bug 271

Summary: Unify Toolbox logging to use .log file
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-14 16:18:32 UTC
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).
Comment 1 Markus Alexander Kuppe 2012-02-16 19:54:26 UTC
Fix released to HEAD

Bug 272

Summary: Add common superclass to TLC domain specific exceptions
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4.1   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2012-02-14 16:25:43 UTC
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.

Bug 273

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+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-14 16:27:29 UTC
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."
Comment 1 Markus Alexander Kuppe 2012-02-16 00:20:55 UTC
Fix released to HEAD that raises a warning if legacy value is detected.
Comment 2 Markus Alexander Kuppe 2012-02-16 00:20:58 UTC
Created attachment 180 [details]
mylyn/context/zip

Bug 274

Summary: Add TLA+ set upper bound command line parameter and Toolbox UI
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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: ---

Description Markus Alexander Kuppe 2012-02-14 16:36:16 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-02-16 00:29:52 UTC
*** This bug has been marked as a duplicate of bug 264 ***

Bug 275

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+ EditorAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.4.1   
Hardware: All   
OS: All   
Target Version: ---

Description Markus Alexander Kuppe 2012-02-14 16:45:07 UTC
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.

Bug 276

Summary: Nested TLC VM might differ from Toolbox VM
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-02-15 22:48:29 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-02-15 22:57:00 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-02-15 22:57:02 UTC
Created attachment 179 [details]
mylyn/context/zip

Bug 277

Summary: TLC does not seem to terminate on SAT problem
Product: TLA+ Toolbox Reporter: Michael Leuschel <leuschel>
Component: TLC ComponentAssignee: 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: ---

Description Michael Leuschel 2012-02-25 09:43:25 UTC
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
 =======================
Comment 1 Leslie Lamport 2012-02-25 16:17:22 UTC
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.

Bug 278

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 ComponentAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2012-02-29 19:16:27 UTC
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.
Comment 1 Leslie Lamport 2012-03-07 21:04:20 UTC
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.)

Bug 279

Summary: TLC bug caused by TLC's not preserving the semantics of CHOOSE
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: 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

Description Leslie Lamport 2012-03-08 00:26:08 UTC
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.
Comment 1 Leslie Lamport 2012-03-08 00:27:59 UTC
Created attachment 182 [details]
Spec exhibiting the bug
Comment 2 Leslie Lamport 2012-03-08 00:28:39 UTC
Created attachment 183 [details]
Configuration file for running outside Toolbox
Comment 3 Leslie Lamport 2012-03-08 00:30:22 UTC
Reassigning it to me.

Bug 280

Summary: "Additional Definitions" entry being put in wrong part of MC.tla file
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: 1.4.2   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2012-03-17 21:05:22 UTC
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.
Comment 1 Leslie Lamport 2012-03-17 22:55:20 UTC
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.
Comment 2 Leslie Lamport 2012-03-17 23:21:30 UTC
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).
Comment 3 Leslie Lamport 2012-03-19 01:04:26 UTC
Change made.  TLC regression tests passed, as well as PlusCal regression tests.

Bug 281

Summary: Apparent race condition between saving spec and running TLC
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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: ---

Description Leslie Lamport 2012-03-19 04:56:03 UTC
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.
Comment 1 Leslie Lamport 2012-03-19 04:57:34 UTC
As promised, I'm now closing the report.

Bug 282

Summary: The F5 menu (Find Definition or Declaration) doesn't handle infix operator symbols properly.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLA+ EditorAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: minor CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2012-03-28 23:47:46 UTC
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.
Comment 1 Leslie Lamport 2012-03-30 00:47:23 UTC
A trivial fix.

Bug 283

Summary: java.lang.ClassFormatError: tlc2/util/Sort
Product: TLA+ Toolbox Reporter: Steve Glaser <bugs>
Component: Core ComponentAssignee: 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: ---

Description Steve Glaser 2012-04-10 20:27:21 UTC
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}"
Comment 1 Leslie Lamport 2012-04-11 01:23:02 UTC
The problem turned out to be corrupted files, and it went away when the Toolbox was downloaded again.

Bug 284

Summary: Toolbox not handling TLC error message properly.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2012-04-24 23:23:45 UTC
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)
Comment 1 Leslie Lamport 2012-04-24 23:26:54 UTC
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.
Comment 2 Leslie Lamport 2012-04-25 01:23:45 UTC
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.

Bug 285

Summary: Toolbox occasionally chooses old TLC version after software upgrade
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: TLA+ EditorAssignee: 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

Description Markus Alexander Kuppe 2012-05-21 12:36:38 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-05-23 17:46:04 UTC
Fix released to HEAD
Comment 2 Markus Alexander Kuppe 2012-05-23 17:46:06 UTC
Created attachment 185 [details]
mylyn/context/zip

Bug 286

Summary: Out of bounds array exception thrown when loading a spec
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: 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

Description Leslie Lamport 2012-06-05 11:25:52 UTC
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.
Comment 1 Leslie Lamport 2012-06-05 11:27:23 UTC
Created attachment 186 [details]
The Spec File
Comment 2 Markus Alexander Kuppe 2012-06-06 14:01:05 UTC
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
Comment 3 Leslie Lamport 2012-06-06 14:34:07 UTC
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.

Bug 287

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 ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: enhancement CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Chris Newcombe 2012-06-10 16:48:30 UTC
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
Comment 1 Leslie Lamport 2012-06-10 17:11:17 UTC
This bug was fixed on 18 May 2012.  The fix will appear in the next release.

Bug 288

Summary: FPSetManager reports negative distinct states due to int overflow
Product: TLA+ Toolbox Reporter: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Component: Core ComponentAssignee: 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

Description Markus Alexander Kuppe 2012-06-25 18:41:14 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-06-25 18:42:37 UTC
Fix released to repo
Comment 2 Markus Alexander Kuppe 2012-06-25 18:42:38 UTC
Created attachment 187 [details]
mylyn/context/zip

Bug 289

Summary: apparent TLC DiskFPSet out of memory when maxTblCnt is Integer MAX_VALUE
Product: TLA+ Toolbox Reporter: Tom Rodeheffer <tomr>
Component: TLA ToolsAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Windows 7   
Target Version: ---

Description Tom Rodeheffer 2012-07-06 00:48:16 UTC
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.
Comment 1 Markus Alexander Kuppe 2012-07-10 15:45:48 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-07-11 12:01:45 UTC
For the record, here is Tom's response:

"...the answer is, yes, I was using a 64bit JVM."
Comment 3 Markus Alexander Kuppe 2012-10-19 09:51:57 UTC
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.

Bug 290

Summary: TLC getFPSet and MultiFPSet disagree on storage unit
Product: TLA+ Toolbox Reporter: Tom Rodeheffer <tomr>
Component: TLA ToolsAssignee: 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: ---

Description Tom Rodeheffer 2012-07-06 01:02:19 UTC
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);
Comment 1 Markus Alexander Kuppe 2012-07-07 10:28:38 UTC
Fixed in HEAD as suggest in comment #0

Bug 291

Summary: TLC MultiFPSet computes size as int
Product: TLA+ Toolbox Reporter: Tom Rodeheffer <tomr>
Component: TLA ToolsAssignee: 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: ---

Description Tom Rodeheffer 2012-07-06 01:36:09 UTC
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;
Comment 1 Markus Alexander Kuppe 2012-07-06 09:36:59 UTC
Thx, I have fixed this separately already.

Bug 292

Summary: PlusCal macro expansion clobbers local variables
Product: TLA+ Toolbox Reporter: michael.deardeuff
Component: Core ComponentAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: lamport, simon
Priority: P3    
Version: unspecified   
Hardware: x86 64-bit   
OS: Mac OS   
Target Version: ---

Description michael.deardeuff 2012-08-09 07:59:52 UTC
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
Comment 1 Leslie Lamport 2012-08-10 03:26:55 UTC
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.
Comment 2 Leslie Lamport 2012-08-11 03:40:27 UTC
The fix will appear in the next public release, which should be within a week or three.

Bug 293

Summary: Checking liveness failed with java.io.IOException: Negative seek offsetjava.io.IOException
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLC ComponentAssignee: 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: ---

Description Chris Newcombe 2012-10-14 18:20:05 UTC
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 @!@!@
Comment 1 Markus Alexander Kuppe 2015-03-20 15:50:22 UTC
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.
Comment 2 Markus Alexander Kuppe 2015-03-27 14:53:37 UTC
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
Comment 3 Markus Alexander Kuppe 2015-03-31 13:51:24 UTC
(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
Comment 4 Markus Alexander Kuppe 2015-04-07 19:55:46 UTC
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

Bug 294

Summary: TLC crash: ArrayIndexOutOfBoundsException: -1073741821 in tlc2.util.Sort
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLC ComponentAssignee: 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

Description Chris Newcombe 2012-10-16 18:21:48 UTC
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
Comment 1 Markus Alexander Kuppe 2012-10-17 10:23:24 UTC
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.
Comment 2 Markus Alexander Kuppe 2012-10-17 10:23:35 UTC
Created attachment 188 [details]
mylyn/context/zip
Comment 3 Markus Alexander Kuppe 2012-10-22 11:01:15 UTC
Created attachment 189 [details]
For the record, the unit tests that reproduces the ArrayIndexOutOfBounds
 exception and performance-compares with java.util.Arrays#sort
Comment 4 Markus Alexander Kuppe 2012-10-23 11:09:10 UTC
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.
Comment 5 Markus Alexander Kuppe 2012-10-23 11:09:13 UTC
Created attachment 190 [details]
mylyn/context/zip

Bug 295

Summary: Suggestion for more control over checkpoints
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: TLC ComponentAssignee: Markus Alexander Kuppe <bugzilla.tlaplus.net>
Status: NEW ---    
Severity: enhancement CC: simon
Priority: P3    
Version: 1.5   
Hardware: All   
OS: All   
Target Version: ---

Description Chris Newcombe 2012-11-25 23:06:37 UTC
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
Comment 1 Markus Alexander Kuppe 2012-11-26 11:28:16 UTC
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.

Bug 296

Summary: TLAPM doesn't handle complex nested EXCEPT expressions
Product: TLA+ Toolbox Reporter: Stephan Merz <stephan.merz>
Component: TLAPSAssignee: 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

Description Stephan Merz 2012-12-06 10:12:23 UTC
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.
Comment 1 Tomer 2013-01-09 11:35:51 UTC
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
Comment 2 Tomer 2013-01-09 13:00:08 UTC
Normalization was approved by Stephan.
Comment 3 Stephan Merz 2013-01-10 09:42:34 UTC
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

Bug 297

Summary: Flattening of modules generates duplicate copies
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2012-12-07 15:25:52 UTC
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
Comment 1 Tomer 2012-12-07 15:28:48 UTC
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).
Comment 2 Tomer 2012-12-28 12:15:10 UTC
Two tests were added to m_dep.mlt to assert the problem.
The issue was fixed by Damien and passes the tests

Bug 298

Summary: Soundness bug due to error in translating EXCEPT
Product: TLA+ Toolbox Reporter: Stephan Merz <stephan.merz>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: critical CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Stephan Merz 2012-12-09 20:51:19 UTC
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).
Comment 1 Tomer 2013-01-09 11:44:16 UTC
This bug (and others) were fixed with the help of Kaustuv and Damien.
Tests t1-t5 in e_elab.mlt pass successfully now.

Bug 299

Summary: TLAPS does not accept "_" in a proof-step name.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: minor CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2012-12-19 20:26:11 UTC
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.

Bug 300

Summary: SMT backend loops on proof obligation
Product: TLA+ Toolbox Reporter: Stephan Merz <stephan.merz>
Component: TLAPSAssignee: hernan.vanzetto
Status: NEW ---    
Severity: normal CC: lamport, tomer.libal
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Stephan Merz 2012-12-31 16:01:30 UTC
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.
Comment 1 Tomer 2013-01-02 11:21:53 UTC
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.

Bug 301

Summary: SMT backend doesn't handle CASE properly
Product: TLA+ Toolbox Reporter: Stephan Merz <stephan.merz>
Component: TLAPSAssignee: hernan.vanzetto
Status: NEW ---    
Severity: normal CC: lamport, tomer.libal
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Stephan Merz 2013-01-02 10:39:34 UTC
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


=============================================================================
Comment 1 Tomer 2013-01-02 11:42:29 UTC
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.

Bug 302

Summary: Pressing cancel in the toolbox does not interrupt the SMT backend
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: hernan.vanzetto, lamport, Stephan.Merz
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-01-02 11:49:05 UTC

    
Comment 1 Tomer 2013-01-02 11:52:09 UTC
[I am sorry for the partial bug report. It was sent by mistake]

Pressing "Cancel" grays out the button, but doesn't actually kill the PM process.

This can be tested on the example from bug 300.

Bug 303

Summary: An improvement to the Visitor pattern
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: damien.doligez, lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-01-09 11:46:51 UTC
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.

Bug 304

Summary: Module dependencies not resolved correctly for external modules with standard modules names
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: normal CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-01-16 13:26:46 UTC
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.
Comment 1 Tomer 2013-01-16 15:52:05 UTC
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
Comment 2 Tomer 2013-01-16 17:52:26 UTC
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)
Comment 3 Tomer 2013-02-12 11:37:30 UTC
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

Bug 305

Summary: tlapm hanging
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: normal CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-01-25 11:11:14 UTC
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 1 Tomer 2013-02-12 20:31:47 UTC
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.

Bug 306

Summary: TLAPM returns error code 0 also when not all theorems are successfully proven
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED INVALID    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-01-30 14:18:53 UTC
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?
Comment 1 Leslie Lamport 2013-01-30 21:25:36 UTC
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

Bug 307

Summary: Can't cancel status checking
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Leslie Lamport 2013-02-20 23:51:51 UTC
Hitting cancel on the Status Checking Launch dialog does nothing when running a status check.

Bug 308

Summary: tlapm reports a bug with error code -1073741819
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---
Attachments: File SetEuclid.tla

Description Leslie Lamport 2013-02-21 03:28:34 UTC
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

Bug 309

Summary: tlapm typo in definition of IsFiniteSet
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: normal CC: damien.doligez, lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-02-25 10:51:03 UTC
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.

Bug 310

Summary: instance of a module that extends TLAPS confounds tlapm with SMTT(10)
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Damien Doligez <damien.doligez>
Status: RESOLVED FIXED    
Severity: normal CC: lamport, tomer.libal
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-02-25 10:53:59 UTC
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.
Comment 1 Damien Doligez 2013-02-25 14:41:35 UTC
fixed in revision 31051

should add a regression test
Comment 2 Damien Doligez 2013-03-08 11:30:57 UTC
Fixed in revision 31051.

Bug 311

Summary: tlapm parser failure on instance with operator substitution
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: normal CC: damien.doligez, lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-02-25 10:55:48 UTC
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
Comment 1 Damien Doligez 2013-03-08 11:38:48 UTC
fixed in revision 31237.

Bug 312

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 ComponentAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: enhancement CC: lamport, simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Chris Newcombe 2013-04-20 21:21:55 UTC
(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.
Comment 1 Leslie Lamport 2013-04-23 20:08:36 UTC
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.

Bug 313

Summary: tlapm bug in printing obligations
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: normal CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-05-06 13:07:38 UTC
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.

Bug 314

Summary: Failure to report an error
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: minor CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-05-06 13:09:23 UTC
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.

Bug 315

Summary: make standard modules visible to the PM
Product: TLA+ Toolbox Reporter: Stephan Merz <stephan.merz>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Stephan Merz 2013-05-24 09:22:30 UTC
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.
Comment 1 Leslie Lamport 2013-06-04 17:49:21 UTC
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.
Comment 2 Leslie Lamport 2013-06-11 11:09:29 UTC
Is fixed in the source and will fix will appear in the next release.

Bug 316

Summary: Toolbox not displaying error report by TLC
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLC ComponentAssignee: Leslie Lamport <lamport>
Status: RESOLVED FIXED    
Severity: normal CC: simon
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---
Attachments: Specification SimpleLiveness

Description Leslie Lamport 2013-06-11 10:39:07 UTC
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.
Comment 1 Leslie Lamport 2013-10-29 18:31:07 UTC
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.

Bug 317

Summary: Sometimes 'create pdf version' command fails to produce new version of pdf file
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: TLATEX ComponentAssignee: 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

Description Leslie Lamport 2013-06-19 10:53:09 UTC
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.)
Comment 1 Markus Alexander Kuppe 2013-06-19 21:42:59 UTC
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.
Comment 2 Markus Alexander Kuppe 2013-06-19 21:49:11 UTC
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.
Comment 3 Markus Alexander Kuppe 2013-06-20 11:28:53 UTC
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.
Comment 4 Markus Alexander Kuppe 2013-06-20 11:31:30 UTC
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)
Comment 5 Markus Alexander Kuppe 2013-06-20 11:31:32 UTC
Created attachment 195 [details]
mylyn/context/zip
Comment 6 Leslie Lamport 2013-07-20 04:07:22 UTC
I haven't seen this bug since Markus's fix, so I will declare it resolved.

Bug 318

Summary: Sometimes Toolbox does not show TLC errors arising from 'Evaluate Constant Expression'
Product: TLA+ Toolbox Reporter: Chris Newcombe <chris.newcombe>
Component: Core ComponentAssignee: Leslie Lamport <lamport>
Status: ASSIGNED ---    
Severity: major    
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Chris Newcombe 2013-07-14 18:13:47 UTC
(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.

Bug 319

Summary: Soundness bug due to coagulation or primes ignoring bound variables
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: RESOLVED FIXED    
Severity: critical CC: damien.doligez, lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-08-02 14:11:18 UTC
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.
Comment 1 Tomer 2013-08-02 14:13:18 UTC
a minor correction

The primes distribution does not distribute the primes over P(Y,z)' as P is not
constant.
Comment 2 Tomer 2013-08-02 14:40:27 UTC
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.
Comment 3 Tomer 2013-08-02 14:45:08 UTC
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)
Comment 4 Tomer 2013-08-14 12:15:55 UTC
fixed except the comment. I will add another issue for dealing with that.

Bug 320

Summary: TLAPM doesnt handle multiple except expressions correctly
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: major CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---

Description Tomer 2013-08-14 12:21:21 UTC
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

Bug 321

Summary: go over all regressions tests in attached file
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: lamport
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Target Version: ---
Attachments: regerssiin tests

Description Tomer 2013-08-14 12:23:58 UTC
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
Comment 1 Tomer 2013-08-14 12:24:48 UTC
Created attachment 196 [details]
regerssiin tests

Bug 322

Summary: Integrate the SANY parser to TLAPM
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: 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    

Description Tomer 2013-08-14 12:27:42 UTC
- 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.

Bug 323

Summary: finish the Action frontend
Product: TLA+ Toolbox Reporter: Tomer <tomer.libal>
Component: TLAPSAssignee: 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:    

Description Tomer 2013-08-14 12:30:29 UTC
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.

Bug 324

Summary: show uses fails to check inside labeled sub-expression
Product: TLA+ Toolbox Reporter: Tom Rodeheffer <tomr>
Component: TLA+ EditorAssignee: 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

Description Tom Rodeheffer 2013-09-05 22:19:54 UTC
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.
Comment 1 Leslie Lamport 2013-10-16 15:01:56 UTC
This was caused by a simple bug and will be fixed in the next release.  Thanks for the report.

Bug 325

Summary: The Toolbox knows what file you REALLY want.
Product: TLA+ Toolbox Reporter: Leslie Lamport <lamport>
Component: Core ComponentAssignee: Leslie Lamport <lamport>
Status: ASSIGNED ---    
Severity: normal    
Priority: P3    
Version: unspecified   
Hardware: All   
OS: Windows 7   
Target Version: ---

Description Leslie Lamport 2013-11-19 20:13:13 UTC
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.

Bug 326

Summary: Toolbox crashes with a dump
Product: TLA+ Toolbox Reporter: RWShore <rwsmob>
Component: Core ComponentAssignee: 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: ---

Description RWShore 2015-04-15 11:03:58 UTC
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
Comment 1 Markus Alexander Kuppe 2015-04-15 11:29:43 UTC
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/

Bug 327

Summary: Incorrect assertion proved
Product: TLA+ Toolbox Reporter: Saksham Chand <schand>
Component: TLAPSAssignee: Tomer <tomer.libal>
Status: NEW ---    
Severity: enhancement CC: lamport
Priority: P5    
Version: 1.5   
Hardware: Other   
OS: Windows   
Target Version: ---

Description Saksham Chand 2015-08-25 13:56:34 UTC
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.