Commit Graph

19996 Commits

Author SHA1 Message Date
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 f4412c81d1
Merge pull request #3441 from peat-psuwit/for-upstream/dbqueue-stop-mutex
db: fix dead lock in zmDbQueue::stop()
2022-02-20 10:32:19 -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 1a54a96c04 Improve title on alarm buttons when we don't have permission. Move onclick from data-on-click to setup in initPage only if permitted 2022-02-18 17:11:18 -05:00
Isaac Connor 002b2c39aa fix button assignments. Don't abort ajax, as it might be important 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 adf8413333 Include EndDateTimeShort in event stats 2022-02-17 13:31:25 -05:00
Isaac Connor 8dedac1a21 Handle empty endtime more gracefully. If there is a next event just jump to it. 2022-02-17 13:30:50 -05:00
Isaac Connor 909c0e903f Include EndDateTimeShort in event ajax response 2022-02-17 13:30: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 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 f3d3cad419 Remove non-translations 2022-02-16 09:59:48 -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 055414c778 DefaultCodec is for event view, not live 2022-02-16 09:59:48 -05:00
Isaac Connor 93ab345a3a DefaultCodec is for event view, not live 2022-02-16 09:59:48 -05:00
Andrew Bauer 9d400b9f6c
use rockylinux:8 container for ci workflow 2022-02-16 08:33:44 -06:00
Andrew Bauer a2a4a8e74f
include arp-scan polkit files in rpm 2022-02-16 08:22:37 -06:00
Andrew Bauer 59d283095d
bump rpm specfile rtsp commit
anytime the rtsp commit is bumped in packpack, it must also be bumped in the rpm specfile
2022-02-16 07:54:01 -06:00
Isaac Connor efc1ec770c Debug the contents of REQUEST on every hit. 2022-02-15 18:52:46 -05:00
Isaac Connor b67e7b8111 serialize form instead of just passing filter id because the modal can now handle unsaved filters 2022-02-15 18:52:46 -05:00
Isaac Connor 8b14885541 Add handling of NOT IN and =\[\] and \!\[\] 2022-02-15 18:52:46 -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 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 a149fa37fc Make filter debug modal work on non-saved filter 2022-02-15 10:37:14 -05:00
Isaac Connor b2e0f805bd Add NOT IN case. Also, fix bad SQL when value evals to false. Test for empty string instead. Fixes #3425 2022-02-15 10:29:58 -05:00
Isaac Connor 59039de985 Use =[] instead of IN as operator. Fixes #3432 2022-02-15 10:23:30 -05:00
Isaac Connor ecd27d033c
Merge pull request #3435 from ZoneMinder/revert-3434-3432-fix-events-view-filter-monitorid
Revert "Add SQL opTypes IN, NOT IN to filter view, #3432"
2022-02-15 10:07:59 -05:00
Isaac Connor 554840d811
Revert "Add SQL opTypes IN, NOT IN to filter view, #3432" 2022-02-15 10:07:48 -05:00
Isaac Connor 03bc24362f
Merge pull request #3434 from jjakob/3432-fix-events-view-filter-monitorid
Add SQL opTypes IN, NOT IN to filter view, #3432
2022-02-15 10:05:57 -05:00
Isaac Connor 5fd5c7fdd1 Maybe fix build on freebsd by including unistd.h 2022-02-15 10:04:37 -05:00
Jernej Jakob 13f2076dc9 Add SQL opTypes IN, NOT IN to filter view, #3432
This possibly fixes the issue where changing the filter for an event
view via the filter button would produce invalid SQL and SQL errors.

web_php[43835].ERR [1.2.3.4] [SQL-ERR 'SQLSTATE[HY000]: General error: 4078 Illegal parameter data types int and row for operation '='', statement was 'SELECT E.*, M.Name AS Monitor FROM `Events` AS E INNER JOIN Monitors AS M ON E.MonitorId = M.Id WHERE ( ( E.StartDateTime >= '2022-02-14 00:47:41'
 and E.StartDateTime <= '2022-02-14 11:47:41' )
 and E.MonitorId = ('1','3')
) ORDER BY E.StartDateTime DESC' params:] at /usr/share/zoneminder/www/includes/database.php line 161

When in the events view, clicking the filterBtn sends us to the filter view with this query term (url-decoded):

&filter[Query][terms][2][attr]=MonitorId&filter[Query][terms][2][op]=IN&filter[Query][terms][2][val]=1,3&filter[Query][sort_asc]=0

but the filter view displays this as "equals", not "in set", because it doesn't know IN from opTypes, only =[].
2022-02-15 14:15:08 +01:00
Isaac Connor b6d2d96d11 Remove offending extra comma 2022-02-14 09:47:59 -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 0e2f2cf572 Merge branch 'timeline_multi_monitor' 2022-02-11 18:08:41 -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 94bc40a6cf Split the data by monitor and display a monitor image/info for each monitor. 2022-02-11 18:06:42 -05:00
Isaac Connor 3250e0edfe simplify some code, pass around zm_event json objects instead of event_id. Each monitor has it's own image so when loading event data put it into a div/img referenced by monitor Id 2022-02-11 18:06:08 -05:00
Isaac Connor 4cc82e24f3 convert some tags to classes instead of ids. Add margin: 0 auto so that monitor images are centered 2022-02-11 18:04:54 -05:00
Isaac Connor cb80283398 Merge branch 'master' into timeline_multi_monitor
update code to use jquery instead of mootools
when only viewing 1 monitor, split view in half
load first event image righ toff the bat
2022-02-11 18:03:35 -05:00
Isaac Connor 514a64ad45 small code cleanup, add Warnings when using slow blend functions. 2022-02-11 12:43:10 -05:00
Isaac Connor b700e7b5ce
Merge pull request #3424 from r01k/master
Fixed in export.php "Class 'Filter' not found" and SQL query with wrong syntax
2022-02-10 21:39:50 -05:00