Actions
Bug #2814
closedcrash when deleting multiple failed recordings
Status:
Fixed
Priority:
Normal
Assignee:
-
Category:
Crashes
Target version:
-
Start date:
2015-05-02
Due date:
% Done:
100%
Estimated time:
Found in version:
v3.9-2772-g8dbc38d
Affected Versions:
Description
This do not happen every time but I can reproduce this easily by creating multiple recordings which I cancel and then delete them all simultaneously in Failed Recordings.
I guess it is the free in deferred_unlink_cb that triggers the crash.
2015-05-02 09:08:38.470 [ INFO] dvr: delete entry 00c097374965b7b8295c422cab75360c "Nyhetsmorgon" on "TV4 Göteborg" start time 2015-05-02 07:57:30, scheduled for recording by "127.0.0.1", retention 31 days 2015-05-02 09:08:38.470 [ INFO] dvr: delete entry 9eeb0827d0aa4bb76a3016edb39e9f31 "Inför Eurovision Song Contest" on "SVT1 Väst" start time 2015-05-02 08:29:30, scheduled for recording by "127.0.0.1", retention 31 days 2015-05-02 09:08:38.470 [ INFO] dvr: delete entry e1fdded798949a510f34a63eb4b3a951 "Amazing Race" on "TV6" start time 2015-05-02 08:59:30, scheduled for recording by "127.0.0.1", retention 31 days 2015-05-02 09:08:38.470 [ INFO] dvr: delete entry 7a8544fd1f6417fb744a1413d9928c40 "Disneydags" on "Barnkanalen/SVT24" start time 2015-05-02 08:59:30, scheduled for recording by "127.0.0.1", retention 31 days 2015-05-02 09:08:38.471 [ INFO] dvr: delete entry f1aaa8482aec0df53aae6474ce4f6683 "Vintagelyx i LA" on "Kunskapskanalen" start time 2015-05-02 08:59:30, scheduled for recording by "127.0.0.1", retention 31 days *** Error in `/home/johanr/projects_other/tvheadend/build.linux/tvheadend': free(): invalid next size (fast): 0x00007fffa80026d0 *** 2015-05-02 09:08:38.471 [ INFO] dvr: delete entry f6742fe3a6f77ea1b8dc3d98e207ea3d "Agenda" on "SVT2 Väst" start time 2015-05-02 09:04:30, scheduled for recording by "127.0.0.1", retention 31 days [New Thread 0x7fffb27fc700 (LWP 3220)] [New Thread 0x7fffb2ffd700 (LWP 3219)] [New Thread 0x7fffb37fe700 (LWP 3218)] [New Thread 0x7fffb3fff700 (LWP 3217)] [New Thread 0x7fffd4ff9700 (LWP 3216)] [New Thread 0x7fffd57fa700 (LWP 3215)] [New Thread 0x7fffd67fc700 (LWP 3213)] [New Thread 0x7fffd6ffd700 (LWP 3212)] [New Thread 0x7fffd7fff700 (LWP 3198)] [New Thread 0x7fffdcff9700 (LWP 3197)] [New Thread 0x7fffdd7fa700 (LWP 3196)] [New Thread 0x7fffddffb700 (LWP 3195)] [New Thread 0x7fffde7fc700 (LWP 3193)] [New Thread 0x7fffdeffd700 (LWP 3192)] [New Thread 0x7fffdf7fe700 (LWP 3190)] [New Thread 0x7fffdffff700 (LWP 3189)] [New Thread 0x7fffe4ff9700 (LWP 3188)] [New Thread 0x7fffe57fa700 (LWP 3187)] [New Thread 0x7fffe5ffb700 (LWP 3186)] [New Thread 0x7fffe67fc700 (LWP 3185)] [New Thread 0x7fffe6ffd700 (LWP 3184)] [New Thread 0x7fffe77fe700 (LWP 3183)] [New Thread 0x7fffe7fff700 (LWP 3182)] [New Thread 0x7fffec91d700 (LWP 3181)] [New Thread 0x7fffed11e700 (LWP 3180)] tcp_server: tvhpoll_wait: Interrupted system call 2015-05-02 09:08:38.473 [ ERROR] iptv: poll() error Interrupted system call, sleeping 1 second ======= Backtrace: ========= /usr/lib/libc.so.6(+0x7198e)[0x7ffff42f698e] /usr/lib/libc.so.6(+0x76dee)[0x7ffff42fbdee] /usr/lib/libc.so.6(+0x775cb)[0x7ffff42fc5cb] /home/johanr/projects_other/tvheadend/build.linux/tvheadend[0x40b479] /home/johanr/projects_other/tvheadend/build.linux/tvheadend[0x4134c8] /usr/lib/libpthread.so.0(+0x7374)[0x7ffff4b3c374] /usr/lib/libc.so.6(clone+0x6d)[0x7ffff436d27d] (gdb) bt full #0 0x00007ffff42b84b7 in raise () from /usr/lib/libc.so.6 No symbol table info available. #1 0x00007ffff42b988a in abort () from /usr/lib/libc.so.6 No symbol table info available. #2 0x00007ffff42f6993 in __libc_message () from /usr/lib/libc.so.6 No symbol table info available. #3 0x00007ffff42fbdee in malloc_printerr () from /usr/lib/libc.so.6 No symbol table info available. #4 0x00007ffff42fc5cb in _int_free () from /usr/lib/libc.so.6 No symbol table info available. #5 0x000000000040b479 in tasklet_thread (aux=<optimized out>) at src/main.c:414 tsk = 0x7fffa8001b50 #6 0x00000000004134c8 in thread_wrapper (p=0x795390) at src/wrappers.c:145 ts = 0x795390 set = {__val = {16388, 0 <repeats 15 times>}} r = <optimized out> #7 0x00007ffff4b3c374 in start_thread () from /usr/lib/libpthread.so.0 No symbol table info available. #8 0x00007ffff436d27d in clone () from /usr/lib/libc.so.6 No symbol table info available.
Updated by Jaroslav Kysela about 10 years ago
- Status changed from New to Fixed
- % Done changed from 0 to 100
Applied in changeset commit:tvheadend|41bb5cdd997bc3011c0ba65ec5a4b93c4c2c5a4c.
Updated by Johan Rehnberg about 10 years ago
I should have said this earlier:
Is it really safe to perform a deferred_unlink of the file but then use rmdir later in dvr_entry_delete ?
I suspect rmdir can fail because the file may not been deleted yet in the worker thread.
Updated by Jaroslav Kysela about 10 years ago
This is good point. Fixed in v3.9-2775-g9273680 .
Actions