Open modalen opened 5 years ago
Hi @modalen ,
What OS and version of OLA are you running?
Can you also add some olad -l 4 logs, see here for how: https://www.openlighting.org/ola/get-help/ola-faq/#How_do_I_get_olad_-l_4_logs
Are we talking roughly 30 seconds, five minutes or three hours before it fails?
Depends on the update rate. With the example i sent, about 1-2 minutes.
Raspberry pi 4 4GB
OLA olad version: 0.10.7 Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster ARMHF
Depends on the update rate. With the example i sent, about 1-2 minutes.
So if you double or halve the refresh rate it changes to match? i. e. It's crashing after a certain number of packets?
Can you share the olad log too please? The error in Python basically just says OLA has gone away.
If i half it takes a long time to crash. i ran "olad -l 4 &> log.txt" log.txt 14618 lines of logging 👍
common/io/EPoller.cpp:306: ss process time was 0.000019 common/io/EPoller.cpp:306: ss process time was 0.000019 olad: malloc.c:2385: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Thank you!
I found the problem. The problem is my code ofc.... I did not clear an array properly. for every loop the DMX universe was expanded by 128 zeros. in the end it was too big for OLA to deal with. Should not OLA discard everything over 512(511) in a universe?
I found the problem.
Well done
The problem is my code ofc....
I'd half suspected it might have been something else (like recursing too much), but not that, and hadn't been able to pin it down either.
I did not clear an array properly. for every loop the DMX universe was expanded by 128 zeros. in the end it was too big for OLA to deal with. Should not OLA discard everything over 512(511) in a universe?
Yes, I think I'd probably agree with you. Can you get the Python code to print out the size of the array before it submits it each time so we can see what number to test with. We need to try and work out if it's in the Python API code, Google Protobuf, OLAD or somewhere else.
Thanks for spotting it. You might like to look at something like this to simplify resetting your array, or simply re-initialising it each time: https://stackoverflow.com/questions/4654414/python-append-item-to-list-n-times
Trying to send sACN with python API. after a while i the CPU usage slowly increases and i get this error at 30%.
test1.zip WARNING:root:Failed to send full datagram Exception in thread Thread-14971: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 1073, in run self.function(*self.args, **self.kwargs) File "test1.py", line 96, in SendDMXFrame wrapper.Client().SendDmx(1, data, DmxSent) File "/usr/lib/python2.7/dist-packages/ola/OlaClient.py", line 888, in SendDmx raise OLADNotRunningException() OLADNotRunningException
WARNING:root:Failed to send full datagram