fesch / Structorizer.Desktop

Structorizer is a little tool which you can use to create Nassi-Schneiderman Diagrams (NSD).
https://structorizer.fisch.lu
GNU General Public License v3.0
65 stars 20 forks source link

Weird bug #536

Closed Maboi closed 6 years ago

Maboi commented 6 years ago

I had to install structorizer 3.22 for my class and a bug appeared in the program They advised me to install 3.26 but it still happens, any idea why? 2018-06-06 1

codemanyak commented 6 years ago

@Maboi This looks as if some drawing process gets hung up with an internal exception. In order to identify the problem I have some questions and requests. What operating system / desktop are you working on? It's difficult for me to guess from the window style. Obviously you don't work via Java WebStart, otherwise you would use the most recent Structorizer version (3.28-02). What exactly did you do to provoke the effect? Did you edit a diagram from scratch or did you load a diagram file designed with an earlier version of Structorizer? Does the GUI contention occur from start on or only after having worked a while? It might be helpful to start Structorizer explicitly from the command line with the respective shell or batch script, such that error messages or stacktraces can be watched. I'm sure there will be lots of them as soon as the problem occurs. It would be useful to send us the console output extract (ideally as an attached text file, rather than textually pasted into the issue form).

Then I would like you to try with the latest Structorizer version from the Structorizer home page. You might find out that the problem has gone before I'll have rummaged through all the bug reports from at least version 3.26 on. I remember vaguely to have seen such symptoms a long time ago...

codemanyak commented 6 years ago

@Maboi I just found out where I had seen a similar symptomatics - it was in issue #334. There and then an outdated Java version had caused the problem. So here is my next question: What is the currently running Java version on your machine? Possibly a Java update might get you rid of the defect. Ideally you make sure that your Java VM is up-to-date and the latest version of Structorizer is in use.

Maboi commented 6 years ago

I currently updated to java 171 and the issue still remains The other problem is that I do not have a choice in which structorizer I use so im stuck to 3.26 My pc is windows 10, 64x btw

Maboi commented 6 years ago

Update: I just installed the latest version but the problem still occurs

codemanyak commented 6 years ago

@Maboi

I currently updated to java 171 and the issue still remains

I suppose you mean Java 8 update 171 (version 1.8.0_171). This should have helped in combination with the latest version of Structorizer.

Update: I just installed the latest version but the problem still occurs

That is Structorizer 3.28-02? Okay, this offers us potentially additional information opportunities. Please have a look into subfolder .structorizer in your home directory. There should be at least one file the name of which matches "structorizer*.log". If there happens to be a related lock file (e.g. structorizer0.log.lck) then please shut the Structorizer and send us the log file as zipped attachment to your issue comment after that. I hope that the log file will provide some elucidating information.

Nevertheless I would like you to describe in more detail how the mis-behaviour develops after having started Structorizer. Does the GUI get stuck from the very beginning?

Maboi commented 6 years ago

I just restarted my pc and its fixed thanks for the help I think the java update was a big factor

codemanyak commented 6 years ago

@Maboi

I just restarted my pc and its fixed thanks for the help I think the java update was a big factor

I'm glad we could tackle it. I'll close this issue now.

I hope you enjoy working with Structorizer. If some other hassle occurs please don't hesitate to inform us.

Maboi commented 6 years ago

I accidently closed the program and when I reopened it the bug was back You could say "Just restart your pc again." but I do not believe this should be a go-to solution This is extremely frustating

As you could see in my original screenshot the program behaves like the old error dialogwindow in windows xp that keps multiplying, but its limited to inside the program

In the code nothing changes and it is still "usable" but its mainly visualy and you have to search for buttons and can misclick 100 times before finding where the right button is

Maboi commented 6 years ago

2018-06-06 2

fesch commented 6 years ago

Is it related to a special save file or does it happen with any file?

Maboi commented 6 years ago

It happens with any file as you can see in the screenshot i opened a new file and instantly got the same issue

codemanyak commented 6 years ago

I reopen the issue but would like you to upload the requested log file. Otherwise it gets difficult to find out what's going on.

Maboi commented 6 years ago

I am sorry but I do not know what you are requesting Could you explain?

codemanyak commented 6 years ago

@Maboi Excuse me for more analysis requests. I'm just trying to rule out possible causes. Might it be that there are several parallel active Java RE versions on your system? Could you please have a look in the Java confguration under tab "Java"? It's not impossible that Structorizer requests an earlier Java version (e.g. 7) though the code definitely requires Java 8. (For instance the webstart jnlp tries from 7+ down instead of starting with "8+".)

Maboi commented 6 years ago

Well I am using Java 8.171 if thats what you want to know

codemanyak commented 6 years ago

@Maboi Well thanks. Why I was asking is that usually a Java update replaces the earlier version. But that is not always true. Sometimes several versions may remain active at the same time and applications select their favourite one if they have the choice. In particular, a 32 bit version might coexist with a 64 bit version. (This could be induced by installed legacy Java applications having brought in their matching Java versions.) You would see such a situation in the Java configuration dialog under tab "Java", button "View": javare If it looks like in the image above then all is okay and the problem is not resulting from ambiguous Java runtime environments (and I need the log file from the .structorizer sub folder in your home directory...). If there are several lines, however, and more than one of them is checked in column "activated" then this would likely cause the trouble. Just uncheck all but 1.8.0_171 in that case and restart Structorizer.

Maboi commented 6 years ago

2018-06-07 3 Everything is in order i believe

codemanyak commented 6 years ago

@Maboi

Everything is in order I believe

Not exactly everything, obviously, but at least the Java environment looks okay. A remarkable strange thing is that there are various offsets of the shadow images, which do not only comprise the diagram but also parts of the menu, toolbars, and report area. How come? Did you move the Structorizer window (such that the duplication is just a result of incomplete damage repair) or is it just the cursor that seeds more and more snippets within the range of the Structorizer window?

But either way, I'm guessing that some unhandled exception causes the malfunction. Unfortunately, I can't reproduce the effect on the computers within my reach. So we do need the console output and ideally the log file(s). You can simply verify that there is no delicate personal data in them. You can dare to send us the texts. Say, are you afraid of presenting the log info in public (i.e. on GitHub)?

Maboi commented 6 years ago

The effect that you see on the screenshots is from moving my cursor over the different button

And I would like to send you the logfile but I simply dont know where to find it

GitMensch commented 6 years ago

And I would like to send you the logfile but I simply dont know where to find it

As it looks like you using a release version of Structorizer on Windows: you can find it at %USERPROFILE%\.structorizer:

grafik

Maboi commented 6 years ago

Structorizer.log structorizer0.log structorizer1.log It seems that I have 3 files so I dont know which one I should post so I'll just post all

codemanyak commented 6 years ago

@Maboi Thank you for the log files. There are only normal info entries in the log files. Hence, it is definitely something extraordinary, the console and error output may elucidate. So now I'd like to ask you to open an MSDOS console (among the standard system applications), then to go with command cd to the Structorizer installation directory after having selected the respective volume (e.g. D:, if it resides on volume D). After that please enter the following command at the prompt: START /B Structorizer.bat This might look as follows: grafik

As soon as the GUI problems begin please select the entire text of the console window, copy it to a text file and load this up here. Many thanks in advance

GitMensch commented 6 years ago

Hm, why not doing start /b Structorizer.bat 1>out.log 2>err.log? This should produce two file that can be directly uploaded.

Maboi commented 6 years ago

Well it seems it cant find structorizer.bat

GitMensch commented 6 years ago

you have to cd C:\to\your\path first

fesch commented 6 years ago

the file should be inside your Structorizer folder, there where all the other files are located

codemanyak commented 6 years ago

@Maboi

the file should be inside your Structorizer folder, there where all the other files are located

Yep, i.e. where you unpacked the structorizer_latest.zip to.

Maboi commented 6 years ago

err.log Here is this what you needed?

codemanyak commented 6 years ago

We are getting a littler closer. But the error listed there doesn't make sense for me: I can't think of a scenario producing a NullPointerException in the blamed method. And even less I see any relation with your application environment...

Maboi commented 6 years ago

so you are saying?

codemanyak commented 6 years ago

I wonder if the err.log will grow while you are moving the mouse etc.

Maboi commented 6 years ago

I just tried and I believe it stays the same

codemanyak commented 6 years ago

This leaves me stunned. Obviously, there is a repetitive failure of the reaction to the cursor movement, which is supposed to be accompanied by repetitive error messages accumulating in the err.log file. The only error message occurring there, however, doesn't seem to have anything to do with the reported bug. In a way, this is sound though, because it means that the misbehaviour leaves no trace at all in the error stream or the log stream. Unfortunately, this makes it utterly difficult to analyse the reasons. It means I will have to find a similar machine with Windows 10 that shows the same behaviour, where I might do the diagnostics with an IDE to find out what the hell is going on. At the same time, you might of course try to find a comparable computer at your site and have a look whether Structorizer shows the same symptomatics on that machine. This would help to get a clue what system parameters might have an impact. Another idea might be to test a different Java-based application like e.g. ArgoUML on your computer and find out whether it suffers from the same disease.

I know, all these advices are like shooting in the dark and I am really sorry for all the hassle you have with the tool. We would be happy to sort it out in no time - if we only could reproduce it or get a clue what the inducing circumstances are. Cases like this (e.g. #304 or #334) have typically been tracked down to an unsuited Java version, but this time it's apparently different: your Java RE is up to date now.

codemanyak commented 6 years ago

Just for the record: A strange detail is that the misplaced repeated images comprise the diagram (or parts of it as in the first image) together with parts of the menu, the toolbar, and even the report list, but never the OS-controlled outer window frame. This seems to mean that no single GUI class of Structorizer is to be blamed but rather the refresh mechanism for damaged GUI regions - and this sounds like a problem between Java and Windows. Maybe it's a special graphics driver Java doesn't cope with in contrast to other, native applications?

codemanyak commented 6 years ago

@Maboi There is some hope: As it is never a good idea to ignore an evident problem, I took some measure to tackle the error reported in the err.log. Apparently there was an unsuited or misplaced command line argument in the Structorizer start command, which caused trouble in the startup process. This might have compromised the event queue such that a GUI initialization thread may have got stuck. I send you a modified Structorizer.jar file, which addresses the potential problem, and I would like you to do the following:

  1. Unpack the zip file somewhere.
  2. Replace the file Structorizer.jar located in the Structorizer.app/Contents/Java subfolder of your Structorizer installation directory with the file from the zip.
  3. Open the command line (MSDOS window) and navigate to the Structorizer folder.
  4. Run the command suggested by GitMensch yesterday (start /b Structorizer.bat 1>out.log 2>err.log).
  5. Upload the obtained err.log file and tell us whether the weird bug has gone.

Thanks in advance and for your patience. (If that solves the problem then I will have to take the blame for your troubles.)

Structorizer_3.28-03alpha.zip

Maboi commented 6 years ago

As I am trying something occured to me I mentioned that the problem doesnt happen the first time I open structorizer after my computer has restarted but it does happen when I close it and reopen it again

I just tried to rename the folder that the program and files are in and it stated that a program inside the folder is still running So I closed everything but the message was still popping up eventhough everything is closed

Might it be possible that something might not stop running when I close the program and when I reopen it, it sort of 'duplicates' certain tasks which leads to the problem

Maboi commented 6 years ago

I just restarted my PC and the bug appeared instantly which normally doesn't happen

codemanyak commented 6 years ago

Thanks for your remarks. Normally, there shouldn't be anything still running there after you have closed the application. The Java VM should stop then. But maybe something is going on in your machine I might not be aware of. Well, you might try to inspect the running processes or open resources with e.g. ProcessExplorer (which is a more powerful TaskManager) after having closed the Structorizer instance. And as I wrote: The error message from err.log suggested me that some unusual command line parameter seemed to be used on starting Structorizer. How do you start Structorizer? Do you double-click the Structorizer.exe in your Structorizer folder? Then you should see a process named "javaw.exe" in the process view of ProcessExplorer. On right-clicking it and selecting the properties you should see something like this under tab "Image": grafik If you start it with the Structorizer.bat from the command line, then you would find a subprocess "java.exe" under the cmd.exe process showing your command line in the properties. An example (with some unsuited nonsense arguments for my testing purposes): grafik Or do you rather use some desktop link? In this latter case please inspect the properties of the link (right mouse click, the selected field "Ziel:" is the used command): grafik Please copy the respective command line here. Such that we might check for some extraordinary addition.

On the other hand, I provide you an once more updated Structorizer.jar file here. If you start Structorizer with it, it will pop up a message box for every command line parameter that is not a structorizer diagram or archive file name to be loaded on start. Structorizer_3.28-03alpha1.zip

Maboi commented 6 years ago

"C:\Program Files\Java\jre1.8.0_171\bin\javaws.exe" -localfile -J-Djnlp.application.href=http://structorizer.fisch.lu/webstart/index.jnlp "C:\Users\%USER%\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\59\2d0e04fb-7b9234a6"

Btw funny that you typed "Ziel", but in case you didnt know im not german haha

Maboi commented 6 years ago

I use desktop link btw

fesch commented 6 years ago

Okay, so you used the Java Web Start version, an not the downloaded file, correct?

codemanyak commented 6 years ago

@Maboi

I use desktop link btw

Obviously, this desktop link was automatically established by the Java WebStart and does not use a downloaded local installation. Unfortunately Java WebStart used to override a manually created link from the Structorizer.exe if that happened to be named "Structorizer". Since you also had started the command line version, you must have a local "installation" as well. If you don't mind create a link from the Structorizer.exe in that local folder please, move it to the desktop and name it "Structorizer.exe" in order to avoid clashes with the Java WebStart link. Please replace the Structorizer.jar with the one from Structorizer_3.28-03alpha1.zip as described earlier and start Structorizer via this "Structorizer.exe" link or better via the command line (Structorizer.bat 1>out.log 2>err.log) as described before. And before you start have the ProcessExplorer running, such that you can watch what processes are starting (and possibly remaining after Structorizer having been closed.)

Btw.

Btw funny that you typed "Ziel", but in case you didnt know im not german haha

I knew. I simply referred to the (German) screenshot because at the moment of writing I hadn't an English version of the dialog at hand such that I wasn't sure how the field might be named (possibly "target" but who knows...). So you would know from the layout what field I meant. Seems to have worked. ;-)

Maboi commented 6 years ago

the bug still appeares but when I open structorizer I see javaw.exe shortly pop up and dissapear again in ProcessExplorer

Maboi commented 6 years ago

I could quickly inspect the properties before it dissapeared this is what it says 2018-06-09_li 2

Maboi commented 6 years ago

what does come up is jp2launcher.exe 2018-06-09 2 _li

codemanyak commented 6 years ago

@Maboi Thanks for the screenshots. (It would have been sufficient to copy the content of the command line field, but anyway.) Just: Why do I still get the impression, you started the Java WebStart version again? I wanted to know how the 3.28-03alpha1 version behaves on your computer, i.e. whether my measures to avoid and catch the parameter-induced exceptions help solving the problem (though I doubt it meanwhile). The WebStart does NOT use the uploaded jar file but the one downloaded from the Structorizer homepage. I thought I had clearly asked you to start the Structorizer.exe or Structorizer.bat therefore. (Of course after having replaced the Structorizer.jar in the way described further above.) Otherwise we don't advance any bit here. ADDENDUM: You may disconnect your computer from the net while you test it - if you happen to fear that we inject you some trojan horse. I can understand that the strange behaviour you observe may wake suspicion. But I assure you we don't play foul here. I just want to know what's the problem and if it may be induced by Structorizer or some Java vulnerablities or possibly by the Java WebStart mechanism. My aim is to provide a cleany working product. I simply hesitate to instigate a new Structorizer version right away before I know the remedy is found. The problem seems only to occur on your computer (at least we haven't heard of others so far), so it might still be likely that Structorizer is not directly to be blamed. But then there would be at least some (incidental?) vulnerability of Structorizer that from all programs only this is affected. We (i.e. the develepor team) need to find out whether we can do something against it. And we need your help as you are the only one, on the computer of which the problem can be reproduced so far.

Have you tried to use Structorizer on a different Windows computer within your reach in the meantime as I asked you?

Maboi commented 6 years ago

I installed the 3.28-03 version from the moment you sent it I opened the .exe and .bat program and on both the bug appeared I checked ProcessExplorer for anything that changes when the bug appeares and nothing dissappeares or changes it stays the same I do not have another pc in my reach

Look I can tell that you are quite frustrated and I understand it but relax you're doing good man

also I dont think it has anything to do with java

codemanyak commented 6 years ago

@Maboi Okay. Step by step now. You wrote:

I just tried to rename the folder that the program and files are in and it stated that a program inside the folder is still running So I closed everything but the message was still popping up eventhough everything is closed.

This made me assume that some parasitary process might still work. If this situation (a process still holds a handle of a file or directory) occurs again, you have a chance to identify that process by means of ProcessExplorer via the "Find" mechanism (Ctrl-F). Simply enter the directory path in the search mask.

Another suspicious detail was the content of the err.log file you sent me. The NullPointerException reported there must have had its origin in an unidentified command line parameter. As I told you I doubt that this induced the phenomen of the GUI distortion. Yet I hardened the parameter analysis and ensured that dubious parameters will be brought up to the user's attention in future. Now I simply hoped to find out what exactly may have provoked that (apparently reproducible) error message on your test 3 days ago. Remember:

I wonder if the err.log will grow while you are moving the mouse etc.

I just tried and I believe it stays the same.

So I just asked you to repeat that very test with the updated Jar file instead. You did something different, though.

Then I asked you to copy the command lines from the involved links and processes. You did a great job catching the temporary processes with ProcessExplorer. But then you sent screenshots where the commands are only partially visible instead of the command lines as text.

Why can't you just do what you are asked to do? That's why I'm getting somewhat impatient. It feels like chasing wild geese.

codemanyak commented 6 years ago

@Maboi

I just tried to rename the folder that the program and files are in and it stated that a program inside the folder is still running

This might of course have had a very simple explanation if the MSDOS window was still open with the Structorizer path as working directory or if some explorer instance should still have held a handle to the directory.

also I dont think it has anything to do with java

Okay. Let's discuss the options:

  1. The problem is within the Structorizer code.
  2. The Java runtime environment version is inappropriate.
  3. The Swing component of the current Java version is defective in some aspects Structorizer makes use of.
  4. The cooperation between Java RE and operating system version is flawed (Java 1.8.0_171 isn't correctly using the WinAPI).
  5. (4. a, actually) There is a defective display driver.
  6. Your computer is compromised by some malware, hardware defect or the like.
  7. There is some irregularity in the specific command or environment you start Structorizer with or in, respectively.

Do you see more possible points of failure? Ad 1.: Structorizer runs on several hundreds of computers (Windows, Linux, Macs) without reported bugs of a similar kind that haven't been deduced back to option 2. Admitted: Sometimes there are concurrency troubles on Structorizer startup. But they leave a trace on the console or in the logs, and after startup accomplished, they don't cause harm. While we don't see any error message in the log files, where shall we direct our attention? And there is an important argument: Usually one part of the GUI would be affected, maybe the menu would be missing, our just the diagram might be contorted. Or the GUI results stalled as a whole. Instead, the symptoms show that parts of the menu, the toolbar, the diagram, and even the report list are multiplied together, and the positions of their duplication even depend on the mouse position. And Structorizer is still reacting as you wrote. This does not look like a Structorizer-internal problem, it rather tells us that the system gets confused about window coordinates. I.e. it mis-places the redrawing activities. This is definitely below the level of Structorizer application logic, wouldn't you agree? Ad 2. We were able to exclude this possible fault after you had updated Java and we had made sure that Java 1,8.0_171 is the only enabled RE. Ad 3. I use the very same Java version for development and bugfixing at the moment. So it can't be the internal logic of Java 1.8.0_171 either, you are right. Ad 4. In this case there would be millions of complaints we would have heard of. Currently I myself don't use Windows 10. But I had Students work with Structorizer on Windows 10 x64 (should be up-to-date) without suffering from the same problem. Ad 5., 6. Beyond my scope. That it's only affecting Structorizer may be coincidence. Remotely, we could only collect indications or treacherous traces on the one hand (rather conincidentially) or exclude or rule out the other options on the other hand. Ad 7. This is what I'm currently poking for.

codemanyak commented 6 years ago

One more consideration:

I mentioned that the problem doesn't happen the first time I open Structorizer after my computer has restarted but it does happen when I close it and reopen it again

Is this complex behaviour reproducible? I.e. occurs the problem always only from the second usage after computer restart on? Then something in the computer environment must change and we will have to identify what it is. Therefore my request to have a look for processes that start with the first launch of Structorizer and might remain active on closing it. (ADDENDUM: No it's not true, you had already told in a comment two days ago that the problem may also occur on the very first Structorizer start of the session.)

It cannot have anything to do with recent Strcutorizer enhancements, because you told us in the beginning that the problem is independent of the Structorizer version (you started with the six and a half years old "stone-age" version 3.22 and experienced the same problem already, meanwhile lots of GUI mechanisms have been revised, the current Structorizer version is more stable than ever). So, we have changed Structorizer version, have changed Java version, what remains must be bound to your system, I could say.