Project

General

Profile

Bug #2814

crash when deleting multiple failed recordings

Added by Johan Rehnberg about 7 years ago. Updated about 7 years ago.

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.

Associated revisions

Revision 41bb5cdd (diff)
Added by Jaroslav Kysela about 7 years ago

deferred_unlink() - fix wrong allocation, fixes #2814

Revision 92736802 (diff)
Added by Jaroslav Kysela about 7 years ago

deferred_unlink: add (fix) the directory tree removal, fixes #2814

History

#1

Updated by Jaroslav Kysela about 7 years ago

  • Status changed from New to Fixed
  • % Done changed from 0 to 100
#2

Updated by Johan Rehnberg about 7 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.

#3

Updated by Jaroslav Kysela about 7 years ago

This is good point. Fixed in v3.9-2775-g9273680 .

Also available in: Atom PDF