Skip to content

xled sometimes hangs, probably when network is flaky #118

@rec

Description

@rec

Summary

Usually when there are network issues the driver raises an exception, but sometimes it just hangs forever.

Affected XLED components

  • Command Line Interface (CLI)
  • [ x ] Library
  • Documentation
  • Other

XLED version

Tried with both the most recent pip version, and HEAD here.

[I skipped the device information because I can't get it right now, but I will if necessary.]

Operating system

Darwin bantam.local 19.6.0 Darwin Kernel Version 19.6.0: Thu Sep 16 20:58:47 PDT 2021; root:xnu-6153.141.40.1~1/RELEASE_X86_64 x86_64

Linux raspberrypi 5.10.63-v7+ #1459 SMP Wed Oct 6 16:41:10 BST 2021 armv7l GNU/Linux

Python version

Python 3.6.6, also tried 3.8.x on Mac
On RP, 3.9.1

Steps to reproduce

I've been running this driver 24/7 for over a month, on two different machines.

I thought my network was solid, but it seems there are occasional short outages which I never notice (e.g. when watching Netflix). (In my experience, this is typical of home systems.)

After a day or two, one of three different behaviors seems to happen:

GOOD:

  File "/code/xled/xled/control.py", line 1314, in show_rt_frame
    self.set_rt_frame_socket(frame, 3)
  File "/code/xled/xled/control.py", line 893, in set_rt_frame_socket
    self.udpclient.send(packet)
  File "/code/xled/xled/udp_client.py", line 95, in send
    return self.handle.sendto(message, 0, (self.destination_host, self.port))
OSError: [Errno 101] Network is unreachable

GOOD:

  File "/Users/tom/synthetic/code/xled/xled/control.py", line 1314, in show_rt_frame
    self.set_rt_frame_socket(frame, 3)
  File "/Users/tom/synthetic/code/xled/xled/control.py", line 893, in set_rt_frame_socket
    self.udpclient.send(packet)
  File "/Users/tom/synthetic/code/xled/xled/udp_client.py", line 95, in send
    return self.handle.sendto(message, 0, (self.destination_host, self.port))
OSError: [Errno 65] No route to host

BAD: nothing - it just hangs and the animation stops working, and there is no output.

Additional information

I reran both programs with --verbose and I'll let you know what happens. This should also give me a stack trace when I break out of the hanging program, which was before suppressed by the calling program.

There will probably be more information coming, but I wanted to get all this down to start with to see if this were familiar to you!

Thanks again for an excellent program.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions