From: Jaroslav Kysela Date: Tue, 11 Dec 2018 14:51:25 +0000 (+0100) Subject: tvh thread: fix print other mutexes for abort X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19d3e32644366528497ab328bb2a2c0ed4c6560b;p=thirdparty%2Ftvheadend.git tvh thread: fix print other mutexes for abort --- diff --git a/src/input/mpegts/dvb_psi_lib.c b/src/input/mpegts/dvb_psi_lib.c index c97d51059..9ae960958 100644 --- a/src/input/mpegts/dvb_psi_lib.c +++ b/src/input/mpegts/dvb_psi_lib.c @@ -121,7 +121,11 @@ mpegts_psi_section_reassemble0 cb = NULL; } - if(crc && tvh_crc32(p, tsize, 0xffffffff)) { + uint32_t r; + if(crc && (r = tvh_crc32(p, tsize, 0xffffffff)) != 0) { + tvhtrace(LS_MPEGTS, "crc %08x %08x\n", r, tvh_crc32(p, tsize + 4, 0xffffffff)); + tvhlog_hexdump(LS_MPEGTS, data, len); + tvhlog_hexdump(LS_MPEGTS, p, tsize); if (cb && tvhlog_limit(&mt->mt_err_log, 10)) { tvhwarn(mt->mt_subsys, "%s: %s: invalid checksum (len %i, errors %zi)", mt->mt_name, logpref, tsize, mt->mt_err_log.count); @@ -191,6 +195,7 @@ mpegts_psi_section_reassemble return; wrong_state: + tvhlog_hexdump(LS_MPEGTS, tsb, 188); mt->mt_sect.ps_lock = 0; } diff --git a/src/input/mpegts/iptv/iptv_libav.c b/src/input/mpegts/iptv/iptv_libav.c index 99c763791..82feb5825 100644 --- a/src/input/mpegts/iptv/iptv_libav.c +++ b/src/input/mpegts/iptv/iptv_libav.c @@ -47,6 +47,7 @@ iptv_libav_write_packet(void *opaque, uint8_t *buf, int buf_size) { iptv_libav_priv_t *la = opaque; + printf("av write: %d\n", buf_size); if (buf_size > 0) { tvh_mutex_lock(&la->lock); if (la->sbuf.sb_ptr < 5*1024*1024) { diff --git a/src/tvh_thread.c b/src/tvh_thread.c index 8d8a9fbc2..7840400f7 100644 --- a/src/tvh_thread.c +++ b/src/tvh_thread.c @@ -480,9 +480,9 @@ tvh_thread_mutex_failed htsbuf_qprintf(&q, "mutex %p waiting in: %s:%i (thread %ld)\n", mutex, w->filename, w->lineno, w->tid); TAILQ_FOREACH(m, &thrwatch_mutexes, link) { if (m == mutex) continue; - htsbuf_qprintf(&q, "mutex %p other in: %s:%i (thread %ld)\n", mutex, mutex->filename, mutex->lineno, mutex->tid); + htsbuf_qprintf(&q, "mutex %p other in: %s:%i (thread %ld)\n", m, m->filename, m->lineno, m->tid); LIST_FOREACH(w, &m->waiters, link) - htsbuf_qprintf(&q, "mutex %p waiting in: %s:%i (thread %ld)\n", mutex, w->filename, w->lineno, w->tid); + htsbuf_qprintf(&q, "mutex %p waiting in: %s:%i (thread %ld)\n", m, w->filename, w->lineno, w->tid); } tvh_thread_deadlock_write(&q); tvh_safe_usleep(2000000);