Commit Graph

4995 Commits

Author SHA1 Message Date
Isaac Connor eee6053293 Only startup a new event if recording==ALWAYS 2022-02-28 13:35:11 -05:00
Isaac Connor 980aaa5942 Fix case of recording events when Recording==NONE 2022-02-28 12:10:14 -05:00
Isaac Connor e31b18a1a6 Use a define to disable y-channel use 2022-02-28 12:02:09 -05:00
Isaac Connor cf31db0bad Merge branch 'master' into replace_function_concept 2022-02-27 14:05:34 -05:00
Isaac Connor 133553e630 Revert "Merge pull request #3119 from Carbenium/fmt"
This reverts commit 90d930c7c3, reversing
changes made to 0bcb9d276f.
2022-02-27 14:05:14 -05:00
Isaac Connor e33b41745d Merge branch 'master' into replace_function_concept 2022-02-27 14:04:01 -05:00
Isaac Connor c5b9ed9451 Revert "Fix zms build"
This reverts commit e6b36bb186.
2022-02-27 13:46:51 -05:00
Isaac Connor e6b36bb186 Fix zms build 2022-02-27 10:41:42 -05:00
Isaac Connor cad57df0bb
Merge branch 'master' into fmt 2022-02-26 13:56:20 -05:00
Isaac Connor fc21fb643e Release lock before notify 2022-02-20 10:33:13 -05:00
Isaac Connor 02ccf13c7b Merge branch 'master' of github.com:ZoneMinder/zoneminder 2022-02-20 10:32:43 -05:00
Isaac Connor b896974a29 Should get lock before testing for connected 2022-02-20 10:32:40 -05:00
Isaac Connor a40b305065 Merge branch 'master' into replace_function_concept 2022-02-20 09:52:03 -05:00
Ratchanan Srirattanamet ebe502a747 db: fix dead lock in zmDbQueue::stop()
Notifying `mCondition` without taking the lock causes a race condition
in ::process() between checking `mTerminate` and waiting for the
`mCondition`, which causes a dead lock. This commit moves writing to
`mTerminate` and notifying `mCondition` under the lock to eliminate race
condition and dead lock.

This is not theoretical. It has caused zmu to hang at exit on a
Raspberry Pi 4, exhuasting PHP-FPM process pool. The stacks below are
captured when running ZoneMinder 1.36.12-focal1 on Ubuntu 20.04:

(gdb) thread apply all bt

Thread 2 (Thread 0xffff80c1c880 (LWP 259988)):
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0xaaaae0584e80 <dbQueue+176>) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xaaaae0584e28 <dbQueue+88>, cond=0xaaaae0584e58 <dbQueue+136>) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0xaaaae0584e58 <dbQueue+136>, mutex=0xaaaae0584e28 <dbQueue+88>) at pthread_cond_wait.c:638
#3  0x0000ffff8700d670 in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /lib/aarch64-linux-gnu/libstdc++.so.6
#4  0x0000aaaae0438f08 in zmDbQueue::process (this=0xaaaae0584dd0 <dbQueue>) at ./src/zm_db.cpp:250
#5  0x0000ffff87013fac in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6
#6  0x0000ffff891264fc in start_thread (arg=0xffffe60d84bf) at pthread_create.c:477
#7  0x0000ffff86dd767c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78

Thread 1 (Thread 0xffff80c23010 (LWP 259987)):
#0  __pthread_clockjoin_ex (threadid=281472841926784, thread_return=0x0, clockid=0, abstime=<optimized out>, block=<optimized out>) at pthread_join_common.c:145
#1  0x0000ffff87014240 in std:🧵:join() () from /lib/aarch64-linux-gnu/libstdc++.so.6
#2  0x0000aaaae04314d0 in exit_zmu (exit_code=0) at ./src/zmu.cpp:200
#3  0x0000aaaae042f4c8 in main (argc=<optimized out>, argv=<optimized out>) at ./src/zmu.cpp:797
2022-02-20 09:58:03 +00:00
Isaac Connor fe69261f10 Include MonitorId as second argument of EventStartCommand and EventEndCOmmand at @baudneo's request. 2022-02-19 15:33:05 -05:00
Isaac Connor dc8f1bc8ed Set shared_data->score before state transitions so that linked monitors pick it up. Should help with missed linked events 2022-02-18 17:44:23 -05:00
Isaac Connor fc541ac57d fix potential double lock of jpeg mutex 2022-02-18 17:11:18 -05:00
Isaac Connor 28f3cb18e4 Make std function warning into a debug. Warning will happen if they are actually used 2022-02-18 15:59:00 -05:00
Isaac Connor 1983801004 Merge branch 'master' into replace_function_concept 2022-02-16 18:49:01 -05:00
Isaac Connor b9e6cf8038 Spacing, remove dead code, add comments. When implementing CLOSE_ALARM mode, check Alarm Frames against alarm_frame_count instead of 0. 2022-02-16 17:27:17 -05:00
Isaac Connor cd2c977ed8 Merge branch 'master' into replace_function_concept 2022-02-16 14:25:38 -05:00
Isaac Connor c9de883a7c Rework to remove static temp_img_buffer. Is now a class member. Must be allocated as needed. 2022-02-16 14:18:37 -05:00
Isaac Connor 67563737c3 Rework to remove static temp_img_buffer. Is now a class member. Must be allocated as needed. 2022-02-16 14:16:46 -05:00
Isaac Connor 243c780a6a cleanup and add fallback to read/write if no sendfile support. 2022-02-16 14:16:25 -05:00
Isaac Connor 2336926d90 Rework to remove static temp_img_buffer. Is now a class member. Must be allocated as needed. Use new reworked zm_sendfile and handle if not all bytes are sent. Fixes #3437. 2022-02-16 14:16:01 -05:00
Isaac Connor 2d3f99eabb rework zm_sendfile to try again if not all bytes were sent. According to the docs, this is entirely possible. 2022-02-16 09:59:48 -05:00
Isaac Connor 33f23cbd84 Sync up n_frames, frame_count, curr_frame_id on int instead of a mix of long int, int and unsigned long int 2022-02-15 18:52:46 -05:00
Isaac Connor 2bc0ec269a Merge branch 'master' into replace_function_concept 2022-02-15 17:02:03 -05:00
Isaac Connor 4f8aba0801 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2022-02-15 10:41:51 -05:00
Isaac Connor 956579d557 handle snap->in_frame being null. 2022-02-15 10:41:42 -05:00
Isaac Connor 5fd5c7fdd1 Maybe fix build on freebsd by including unistd.h 2022-02-15 10:04:37 -05:00
Isaac Connor c8a2b6d679 Merge branch 'master' into replace_function_concept 2022-02-14 12:03:25 -05:00
Isaac Connor 91b536b868 Change the test for slow functions to mod4. The unrolled and SSE function work on 4 pixels at a time or 16 or 12 bytes depending on colours.This will improve cpu use on resolutions like 1280x800 2022-02-14 09:43:48 -05:00
Isaac Connor 485cc26065 Merge branch 'master' into replace_function_concept 2022-02-12 22:17:47 -05:00
Isaac Connor e3631099f6 Rename v_image to y_image cuz that's what it is 2022-02-12 22:14:51 -05:00
Isaac Connor 552974c5b7 Pass full packet to AddFrame so that we can also write other contents out 2022-02-12 22:14:21 -05:00
Isaac Connor 6e7e6d9e8e small code cleanup, add Warnings when using slow blend functions. 2022-02-11 18:06:43 -05:00
Isaac Connor 684078e72f re-enable y-channel motion detection 2022-02-08 12:08:41 -05:00
Isaac Connor f66a463574 Merge branch 'master' into replace_function_concept 2022-02-08 12:07:30 -05:00
Isaac Connor 2768975f96 Only notify one. Anyone waiting is waiting on a lock and only 1 process can get that lock, so only one should try. 2022-02-08 10:12:29 -05:00
Isaac Connor 8c13aa7d3a Cleanup LockedPacket, use RAII 2022-02-08 10:10:00 -05:00
Isaac Connor 8e689340ce Don't need to check for end of queue as we already did that when adding packet to the queue 2022-02-08 10:06:32 -05:00
Isaac Connor fe01af6966 Don't need to test for end() because we added our packet to the queue and still have the lock 2022-02-08 09:57:56 -05:00
Isaac Connor 1982c21e1f
Merge pull request #3423 from jp-bennett/master
Starts moving elements from zm_monitor.cpp into nested classes and dedicated files.
2022-02-03 17:53:31 -05:00
Jonathan Bennett dde3884084 Moves Janus and Amcrest into their own nested classes 2022-02-03 16:31:07 -06:00
Isaac Connor 524662e6c7 Merge branch 'master' into replace_function_concept 2022-02-03 12:41:46 -05:00
Isaac Connor da4c880233 0 out another used of y-image 2022-02-03 12:16:01 -05:00
Isaac Connor 02a2c783e4 Disable alleged y-channel image motion detection. Doesn't work. 2022-02-03 11:57:27 -05:00
Isaac Connor 67ac0fdffd Disable alleged y-channel image motion detection. Doesn't work. 2022-02-03 11:57:00 -05:00
Isaac Connor 838704e58e Add more stop_ tests so that when we are told to terminate, we actually do so. 2022-02-03 11:40:17 -05:00