Tvheadend latested git segfault

I need to compile the latest git version for my TP-Link TL-WDR3600 v1. Nativ compiling isnt possible because of missing cmake (with is force rebooting my device while compiling) so i have modified the Makefile from your default opkg repo to crosscompile it with your SDK.

This is my Makefile

fleixi@melli:~/lede/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64$ cat feeds/packages/multimedia/tvheadend/Makefile

#
# Copyright (C) 2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=tvheadend
PKG_VERSION:=9.9.9
PKG_RELEASE:=1

PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
#PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://192.168.1.122/
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=LICENSE.md

PKG_FIXUP:=autoreconf

PKG_USE_MIPS16:=0

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk

define Package/tvheadend
  SECTION:=multimedia
  CATEGORY:=Multimedia
  TITLE:=Tvheadend is a TV streaming server for Linux
  DEPENDS:=+libopenssl +librt +zlib +TVHEADEND_AVAHI_SUPPORT:libavahi-client $(ICONV_DEPENDS)
  URL:=https://tvheadend.org
  MAINTAINER:=Jan Čermák <jan.cermak@nic.cz>
endef

define Package/tvheadend/description
  Tvheadend is a TV streaming server and recorder for Linux, FreeBSD and Android
  supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, SAT>IP and HDHomeRun as input sources.

  Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
endef

define Package/tvheadend/config
  menu "Configuration"
  depends on PACKAGE_tvheadend
  source "$(SOURCE)/Config.in"
  endmenu
endef

ifeq ($(CONFIG_TVHEADEND_CWC_SUPPORT),)
  CONFIGURE_ARGS += --disable-cwc
endif

ifeq ($(CONFIG_TVHEADEND_LINUXDVB_SUPPORT),)
  CONFIGURE_ARGS += --disable-linuxdvb
endif

ifeq ($(CONFIG_TVHEADEND_DVBSCAN_SUPPORT),)
  CONFIGURE_ARGS += --disable-dvbscan
endif

ifeq ($(CONFIG_TVHEADEND_AVAHI_SUPPORT),)
  CONFIGURE_ARGS += --disable-avahi
else
  CONFIGURE_ARGS += --enable-avahi
endif

CONFIGURE_ARGS += \
        --arch=$(ARCH) \
        --disable-dbus_1 \
        --disable-libav \
        --disable-ffmpeg_static \
        --enable-bundle

define Build/Prepare
        $(call Build/Prepare/Default)
        echo 'Tvheadend $(shell echo $(PKG_SOURCE_VERSION) | sed "s/^v//")~openwrt$(PKG_RELEASE)' \
                > $(PKG_BUILD_DIR)/debian/changelog
endef

define Package/conffiles
/etc/config/tvheadend
endef

define Package/tvheadend/install
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/tvheadend.init $(1)/etc/init.d/tvheadend
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) ./files/tvheadend.config $(1)/etc/config/tvheadend

        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/build.linux/tvheadend $(1)/usr/bin/
endef

$(eval $(call BuildPackage,tvheadend))

the package is compiled fine and could installed without problems but if i trying to start tvheadend i get a segmentation fault.

Some outputs:

ldd /usr/bin/tvheadend
        /lib/ld-musl-mips-sf.so.1 (0x564e4000)
        libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x77156000)
        libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x76f7c000)
        libz.so.1 => /usr/lib/libz.so.1 (0x76f5c000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x76f38000)
        libc.so => /lib/ld-musl-mips-sf.so.1 (0x564e4000)

strace /usr/bin/tvheadend
execve("/usr/bin/tvheadend", ["/usr/bin/tvheadend"], [/* 14 vars */]) = 0
set_thread_area(0x77f0dd48)             = 0
set_tid_address(0x77f06cac)             = 24198
open("/etc/ld-musl-mips-sf.path", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib/libssl.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libssl.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libssl.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fstat64(3, {st_mode=S_IFREG|0555, st_size=456396, ...}) = 0
read(3, "\177ELF\1\2\1\0\5\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\334P\0\0\0004"..., 936) = 936
mmap2(NULL, 458752, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x77df2000
mmap2(0x77e5c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5a000) = 0x77e5c000
close(3)                                = 0
open("/lib/libcrypto.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libcrypto.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libcrypto.so.1.0.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fstat64(3, {st_mode=S_IFREG|0555, st_size=2220120, ...}) = 0
read(3, "\177ELF\1\2\1\0\5\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\3\331\340\0\0\0004"..., 936) = 936
mmap2(NULL, 1937408, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x77c18000
mmap2(0x77dd7000, 106496, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1af000) = 0x77dd7000
mmap2(0x77dee000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x77dee000
close(3)                                = 0
open("/lib/libz.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libz.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=61720, ...}) = 0
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\24\200\0\0\0004"..., 936) = 936
mmap2(NULL, 131072, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x77bf8000
mmap2(0x77c16000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x77c16000
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=77040, ...}) = 0
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0(\20\0\0\0004"..., 936) = 936
mmap2(NULL, 143360, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x77bd4000
mmap2(0x77bf6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12000) = 0x77bf6000
close(3)                                = 0
mprotect(0x77c16000, 4096, PROT_READ)   = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x5650fd88} ---
+++ killed by SIGSEGV +++
Segmentation fault

I have no idea whats wrong.Any idea?

I also have same issue

https://tvheadend.org/issues/4286

same here. it works if you compile lede and tvheadend with glibc..

@nroberto13

i tested this (gcc), but without success.
You only changed Toolchain to use gcc ?

@fleixi, @harrylwc, @nroberto13
Can you please share your package file / patches for TVH ?

regards

LufI

Hi Lufl,

the problem was fixed with this https://tvheadend.org/issues/4870

cheers

Can you Please Share your package File?

@nroberto13
Can you Please Share your package File?

hmmm, getting Seg Fault all the time.

[386144.459870] do_page_fault(): sending SIGSEGV to tvh:epgdata for invalid read access from 00000000
[386144.468850] epc = 77f996b4 in libc.so[77f27000+92000]
[386144.474014] ra = 77f993e4 in libc.so[77f27000+92000]
[386184.686639] do_page_fault(): sending SIGSEGV to tvh:epgdata for invalid read access from 00000000
[386184.695575] epc = 77f936b4 in libc.so[77f21000+92000]
[386184.700790] ra = 77f933e4 in libc.so[77f21000+92000]

also if i use glibc

[ 61.349497] do_page_fault(): sending SIGSEGV to tvh:epgdata for invalid read access from 00000000
[ 61.358408] epc = 77a815e4 in libc-2.26.so[779fd000+170000]
[ 61.364000] ra = 77a8118c in libc-2.26.so[779fd000+170000]

sorry for the late reply, here's my Makefile

#
# Copyright (C) 2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=tvheadend
PKG_VERSION:=4.2.5
PKG_RELEASE:=1

PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/tvheadend/tvheadend.git
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=LICENSE.md

PKG_FIXUP:=autoreconf

PKG_USE_MIPS16:=0

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk

define Package/tvheadend
  SECTION:=multimedia
  CATEGORY:=Multimedia
  TITLE:=Tvheadend is a TV streaming server for Linux
  DEPENDS:=+libopenssl +librt +zlib +TVHEADEND_AVAHI_SUPPORT:libavahi-client $(ICONV_DEPENDS) +libdvbapi +libdvben50221 +libucsi
  URL:=https://tvheadend.org
  MAINTAINER:=Jan Čermák <jan.cermak@nic.cz>
endef

define Package/tvheadend/description
  Tvheadend is a TV streaming server and recorder for Linux, FreeBSD and Android
  supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, SAT>IP and HDHomeRun as input sources.

  Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
endef

define Package/tvheadend/config
  menu "Configuration"
  depends on PACKAGE_tvheadend
  source "$(SOURCE)/Config.in"
  endmenu
endef
ifeq ($(CONFIG_TVHEADEND_CWC_SUPPORT),)
  CONFIGURE_ARGS += --disable-cwc
endif

ifeq ($(CONFIG_TVHEADEND_LINUXDVB_SUPPORT),)
  CONFIGURE_ARGS += --disable-linuxdvb
endif

ifeq ($(CONFIG_TVHEADEND_DVBSCAN_SUPPORT),)
  CONFIGURE_ARGS += --disable-dvbscan
endif

ifeq ($(CONFIG_TVHEADEND_AVAHI_SUPPORT),)
  CONFIGURE_ARGS += --disable-avahi
else
  CONFIGURE_ARGS += --enable-avahi
endif

CONFIGURE_ARGS += \
        --arch=$(ARCH) \
        --enable-dvben50221 \
        --disable-dbus_1 \
        --disable-libav \
        --enable-bundle \
        --disable-hdhomerun_static \
        --disable-pie \
        --disable-satip_server \
        --disable-satip_client \
        --disable-imagecache \
        --disable-libav \
        --disable-ffmpeg_static \
        --disable-libx264 \
        --disable-libx264_static \
        --disable-libx265 \
        --disable-libx265_static \
        --disable-libvpx \
        --disable-libvpx_static \
        --disable-libtheora \
        --disable-libtheora_static \
        --disable-libvorbis \
        --disable-libvorbis_static \
        --disable-libfdkaac \
        --disable-libfdkaac_static \
        --disable-nvenc \
        ledeckage/multimedia/tvheadend/Makefile--disable-libmfx_static \
        --disable-uriparser
#if you don't have the uriparser library, the build-in regex routines are used instead...
define Build/Prepare
        $(call Build/Prepare/Default)
        echo 'Tvheadend $(shell echo $(PKG_SOURCE_VERSION) | sed "s/^v//")~openwrt$(PKG_RELEASE)' \
                > $(PKG_BUILD_DIR)/debian/changelog
endef

define Package/conffiles
/etc/config/tvheadend
endef

define Build/Compile
        $(call Build/Compile/Default,LANGUAGES='de en_US hu ro')
endef

define Package/tvheadend/install
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/tvheadend.init $(1)/etc/init.d/tvheadend
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) ./files/tvheadend.config $(1)/etc/config/tvheadend

        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/build.linux/tvheadend $(1)/usr/bin/
endef

$(eval $(call BuildPackage,tvheadend))


ok, got latest Version to work.
Not the best idea, but after removing the 'iconv' test everything works for me.
Tested on ramips (mt7621) MI3g Router.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.