hbons / SparkleShare

Share and collaborate by syncing with any Git repository instantly. Linux, macOS, and Windows.
https://sparkleshare.org
Other
4.89k stars 576 forks source link

Crashes after Fallback to Polling #734

Closed DrAzraelTod closed 12 years ago

DrAzraelTod commented 12 years ago

Right from Start SparcleShare constantly Disconnects the Listener and starts to Poll for Changes After ~1 hour it crashes with something like:

14:43:57 [MP3] Falling back to polling
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
      at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
  at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 

Installed it today and saw it now the third time (but have only now startet keeping a terminal with output open, so i'm not that sure it's allways the same problem)

DrAzraelTod commented 12 years ago

yes.. it happend again, same result:

15:16:05 [dotfiles] Falling back to polling
15:16:05 [MP3] Falling back to polling
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
  at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
jtrott commented 12 years ago

Got the same here:

May  3 18:18:42 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 18:18:42 [ListenerTcp] Pinging tcp://notifications.sparkleshare.org:1986/
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [ListenerTcp] System woke up from sleep
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Network subsystem is down
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [sparkleshare] Falling back to polling
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Ping timeout
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [sparkleshare] Falling back to polling
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]:   at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]:   at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an objec
t
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]:   at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]:   at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
May  3 19:35:37 dwarf13 [0x0-0x311a117].org.sparkleshare.sparkleshare[11809]: 19:35:37 [Listener] Trying to reconnect to tcp://notifications.sparkleshare.org:1986/
May  3 19:35:37 dwarf13 com.apple.launchd.peruser.503[231] ([0x0-0x311a117].org.sparkleshare.sparkleshare[11809]): Exited with code: 1

AND

May  4 15:39:02 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]: 15:39:02 [ListenerTcp] Pinging tcp://notifications.sparkleshare.org:1986/
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]: 15:39:07 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Ping timeout
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]: 15:39:07 [sparkleshare] Falling back to polling
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]:   at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]:   at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]: [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an objec
t
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]:   at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
May  4 15:39:07 dwarf13 [0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]:   at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
May  4 15:39:07 dwarf13 com.apple.launchd.peruser.503[231] ([0x0-0x31a71a4].org.sparkleshare.sparkleshare[17049]): Exited with code: 1
wizonesolutions commented 12 years ago

I'm probably experiencing this issue as well. Next time it crashes, I'll start it from a terminal.

naggie commented 12 years ago

I get the same thing. It can't talk to the notification server I think. Falling back to polling on a ~1GB (+500MB history) repository.

10:11:33 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Connection timed out
10:11:33 [academic] Falling back to polling
10:11:33 [other] Falling back to polling
10:12:09 [Listener] Listening for announcements on tcp://notifications.sparkleshare.org:1986/
10:12:09 [Git][academic] Checking for remote changes...
10:12:09 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" ls-remote ssh://git@github.com/naggie/academic master
10:12:12 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" log -1 --format=%H
10:12:12 [Git][other] Checking for remote changes...
10:12:12 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" ls-remote ssh://git@github.com/naggie/other master
10:12:15 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" log -1 --format=%H
10:12:15 [ListenerTcp] Subscribing to channel f35d668db3d7610f3173bc213df3d10e26f50237 on tcp://notifications.sparkleshare.org:1986/
10:13:18 [ListenerTcp] Pinging tcp://notifications.sparkleshare.org:1986/
10:13:23 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Ping timeout
10:13:23 [academic] Falling back to polling
10:13:23 [other] Falling back to polling

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
  at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 

Let me know what I can do to help. This is a great project.

wizonesolutions commented 12 years ago

I'm getting the exact same issue (I switched back to the downloadable client). Now that I know Console.app exists...here goes.

5/7/12 1:57:28.272 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: 01:57:28 [ListenerTcp] Pinging tcp://notifications.sparkleshare.org:1986/ 5/7/12 1:57:28.280 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: 01:57:28 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Ping timeout 5/7/12 1:57:28.280 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: 01:57:28 [business] Falling back to polling 5/7/12 1:57:28.280 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: 01:57:28 [finance] Falling back to polling 5/7/12 1:57:28.280 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: 01:57:28 [photos] Falling back to polling 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: at SparkleLib.SparkleListenerTcp.<Connect>m__2 () [0x00000] in <filename unknown>:0 5/7/12 1:57:29.283 AM [0x0-0x1ee1ee].org.sparkleshare.sparkleshare: at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 5/7/12 1:57:29.288 AM com.apple.launchd.peruser.502: ([0x0-0x1ee1ee].org.sparkleshare.sparkleshare[3716]) Exited with code: 1

ghost commented 12 years ago

Hi, I've been using SparkleShare 0.8.4 for a while, but now that I've deployed to other 3 computers and created 2 projects in my private gitolite server, my laptop has started to have this issue :-(. I´m pasting my logs. At least once, rebooting the system fixed the problem for a while. Do you think using a private notifications server could do the trick?

May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [Listener] Trying to reconnect to tcp://notifications.sparkleshare.org:1986/ May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Connection timed out May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [foo] Falling back to polling May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" status --porcelain May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [TA-Marketing] Falling back to polling May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" log -1 --format=%H May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [Cmd] git --exec-path="/Applications/SparkleShare.app/Contents/Resources/git/libexec/git-core" rev-list --reverse HEAD May 8 11:40:33 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: 11:40:33 [ListenerFactory] Refered to existing tcp listener for tcp://notifications.sparkleshare.org:1986/ May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleControllerBase.GetHTMLLog (System.Collections.Generic.List1 change_sets) [0x00000] in <filename unknown>:0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleEventLogController.get_HTML () [0x00000] in <filename unknown>:0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleEventLogController+<>c__AnonStorey12.<>m__5E () [0x00000] in <filename unknown>:0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at System.Threading.Thread.StartUnsafe () [0x00000] in <filename unknown>:0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleControllerBase.GetHTMLLog (System.Collections.Generic.List1 change_sets) [0x00000] in :0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleEventLogController.get_HTML () [0x00000] in :0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at SparkleShare.SparkleEventLogController+<>cAnonStorey12.<>m5E () [0x00000] in :0 May 8 11:40:36 Kolossus [0x0-0x63063].org.sparkleshare.sparkleshare[1420]: at System.Threading.Thread.StartUnsafe () [0x00000] in :0 May 8 11:40:36 Kolossus com.apple.launchd.peruser.501125: Exited with code: 1

naggie commented 12 years ago

I think it would, but haven't had time to try it. Please do :)

wizonesolutions commented 12 years ago

I set up my own private notification server and will see how long the app holds on. My Linux machine fell back to polling (but then reconnected alright) at least once, so not sure how often polling fallback will still happen...but worth a try. Setting up the notification server was really well-documented for the box I put it on (running Ubuntu 10.04), and it just worked after I ran the commands and updated the config.xml files with <announcements_url>tcp://example.com:1986</announcements_url> (although it still says irc:// in the documentation - I just imitated the default notification server and use tcp:// without issue).

It's a workaround at best, but at least I will probably get quicker syncing as well.

huntz commented 12 years ago

I confirm the same problem. I've tried the 0.8.4 and 0.8.3 (on Snow Leopard) with the same result:

13:19:56 [Listener] Disconnected from tcp://notifications.sparkleshare.org:1986/: Connection timed out
13:19:56 [MyDropBox] Falling back to polling

Unhandled Exception: System.ObjectDisposedException: The object was used after being disposed.
  at System.Net.Sockets.Socket.Send (System.Byte[] buf) [0x00000] in :0 
  at SparkleLib.SparkleListenerTcp.m__2 () [0x00000] in :0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in :0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ObjectDisposedException: The object was used after being disposed.
  at System.Net.Sockets.Socket.Send (System.Byte[] buf) [0x00000] in :0 
  at SparkleLib.SparkleListenerTcp.m__2 () [0x00000] in :0 
  at System.Threading.Thread.StartUnsafe () [0x00000] in :0 
naggie commented 12 years ago

Following this problem I have had sparkleshare running to 2 days without crashing. I am confused. I don't think I did anything different this time.

It's worth noting that I was committing 1GB of data to the repository, sync'd with github. repository last time it crashed.

ghost commented 12 years ago

At the end, right after posting here, I set up a private notification server on an Ubuntu 10.10, but I didn't find the time to report back. It was easy and straight-forward except for a couple of minor glitches. All our clients have been working smoothly so far. No crashes, even when there's no connection to the notification server :-? I don't know what causes the crash, but I was thinking on setting up the notification server anyhow so.... Just for reference, I'm commiting to a private gitolite server on Ubuntu.

naggie commented 12 years ago

So maybe this is nothing to do with the notification server. Azaceta: did it crash during the first sync by any chance?

ghost commented 12 years ago

Naggie, not at all, the repo was running and we were making test with small files (1 at a time), so I don't think neither size or amount of files is the issue. Can it be related more to the network than to the repo? Maybe the way it captures errors from the ssh routines? Just an idea.

wizonesolutions commented 12 years ago

Same here. Been going strong for 2 days or so, isn't crashing. Good enough workaround for me since Node.js isn't a memory hog.

ghost commented 12 years ago

Hi all, I've been running the notification server for a while now and it seems that my clients are not dying anymore. But now it seems the notification server crashes from time to time, and some times this is quite frequent. I've not analyzed why but I've built a small script I've put into a crontab to produce a respawn of the notification server in case it dies. I've set it up to run every 5 mins. I don't know where exactly to put it, as it doesn't really fit into the notification set up page of the wiki, so I'm putting it here just in case it is useful for anyone. If you have a suggestion on where to put it, please let me know it. Here're my 2 cents:

#!/bin/bash
PATH=$PATH:/usr/bin:/bin
procnum=`ps ax|grep node|grep fanout|wc -l`

if [ $procnum -lt 1 ] ; then
    nohup /usr/local/bin/sparkleshare_notification_server.sh &
fi

Create a file with this, mark it as executable and call it from the crontab or whatever job scheduler you use.

benjaminoakes commented 12 years ago

For what it's worth, 0.8.3 gives this exception:

Unhandled Exception: System.ObjectDisposedException: The object was used after being disposed.

And 0.8.4 gives this exception:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
hbons commented 12 years ago

We got a new (more stable) notification service up, so this should not happen that often anymore. This will still need to be fixed though and I'm looking into it.

benjaminoakes commented 12 years ago

I can confirm the exceptions aren't happening any longer on this side. Thanks, from all of us.

I appreciate that you (and others?) are maintaining and monitoring this notification service. Is it something the community can be involved with as well? (I'm referring to the shared one, although I'm aware that we can host our own.) Or is the only option being indirectly involved by donating?

hbons commented 12 years ago

@benjaminoakes Sure! We changed to running https://github.com/travisghansen/fanout/ which is written in C instead of using the nodeJS version which was causing a lot of problems. Donations are very welcome, but patches/contributions are much more needed. :)

wizonesolutions commented 12 years ago

Ah, have you updated the private notification server instructions? :) Should I update mine?

On Thu, May 17, 2012 at 7:37 AM, Hylke Bons < reply@reply.github.com

wrote:

@benjaminoakes Sure! We change to running https://github.com/travisghansen/fanout/ which is written in C instead of using the nodeJS which was causing a lot of problems. Donations are very welcome, but patches/contributions are much more needed. :)


Reply to this email directly or view it on GitHub: https://github.com/hbons/SparkleShare/issues/734#issuecomment-5765250