conicalflask / fs2

A sophisticated file sharing system for LAN parties with a focus on fast accurate searching, easy browsing and fast transfers.
BSD 3-Clause "New" or "Revised" License
6 stars 1 forks source link

Starting an older version of FS2 segfaults in the AutoUpdate code #4

Closed mt-inside closed 12 years ago

mt-inside commented 12 years ago

Steps

2012.08.06 23:16:05 INFO: Checking for updates... 2012.08.06 23:16:05 INFO: There is a new version available: 0.9.3 2012.08.06 23:16:05 INFO: Starting to download update (fs2client-0.9.3.jar) from: http://www.empty.org.uk/fs2-autoupdate//fs2client-0.9.3.jar 2012.08.06 23:16:05 INFO: The indexnode at http://127.0.0.1:1337 is now known as 'magrathea' 2012.08.06 23:16:05 WARNING: Unable to runtime-bork ProgressMonitor.class: java.lang.NullPointerException java.lang.NullPointerException at client.gui.Notifications.fixupPM(Notifications.java:162) at client.gui.Notifications.downloadStarted(Notifications.java:61) at client.platform.Acquire.downloadUpdate(Acquire.java:157) at client.platform.Acquire.checkAndDownloadUpdate(Acquire.java:145) at client.platform.Acquire.autoCheckForUpdates(Acquire.java:66) at client.ClientExecutor.main(ClientExecutor.java:115)

conicalflask commented 12 years ago

I'm fairly sure this is just a warning and the stacktrace is debugging information.

Are there any actual nasty behaviours? Does it perform the autoupdate correctly and relaunch the new version? If not, there's probably another problem further down in the log not included here.

mt-inside commented 12 years ago

Hmm, most warnings aren't decorated with a stack trace. And it does say NullRefException... It does restart the new version, but this seems to be an error in some progress monitoring code?

conicalflask commented 12 years ago

I was a bit unclear above.

I know that this warning is benign and the presence of it in the log is to indicate nothing bad has happened as a consequence. In order to get the launch progress to appear and screen centre I have to do some naughty things that don't work on all Java distributions. In this case you get odd exceptions in the fixupPM() method. These are caught and then life goes on but without the progress bar displaying as intended.

The stacktrace is emitted here because it's a curiosity as to why it fails, it's not always the same and as I'm doing nasty reflection hacking it's guarded closely. In this case it seems to be failing to hack the progress dialog because it doesn't even exist. I don't know why though and I'd have to look through the specific implementation of your java libraries. The proper fix is to implement my own progress dialog rather than using the basic one built into java and hacking it to work as I want. I was lazy :)