ossrs / srs

SRS is a simple, high-efficiency, real-time video server supporting RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH, and GB28181.

Home Page:https://ossrs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SRS not lauching after compile on ARM

deluxor opened this issue · comments

Something weird happening here, i run it and just closes no process is created, here is the log, it was compiled on a PI with --pi flag.

[2015-09-19 19:00:37.330][trace][18654][0] srs checking config...
[2015-09-19 19:00:37.331][trace][18654][0] detect intranet address: 127.0.0.1, ifname=lo
[2015-09-19 19:00:37.332][warn][18654][0][2] stats disk not configed, disk iops disabled.
[2015-09-19 19:00:37.332][trace][18654][0] write log to file ./objs/origin.log
[2015-09-19 19:00:37.332][trace][18654][0] you can: tailf ./objs/origin.log
[2015-09-19 19:00:37.332][trace][18654][0] @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog
[2015-09-19 19:00:37.333][trace][18654][0] srs(simple-rtmp-server) 2.0.189
[2015-09-19 19:00:37.333][trace][18654][0] license: The MIT License (MIT), Copyright (c) 2013-2015 SRS(simple-rtmp-server)
[2015-09-19 19:00:37.333][trace][18654][0] primary/master: SRS/1.0release
[2015-09-19 19:00:37.333][trace][18654][0] authors: winlin,wenjie.zhao
[2015-09-19 19:00:37.333][trace][18654][0] contributors: winlin<winlin@vip.126.com> wenjie.zhao<740936897@qq.com> xiangcheng.liu<liuxc0116@foxmail.com> naijia.liu<youngcow@youngcow.net> alcoholyi<alcoholyi@qq.com>byteman<wangchen2011@gmail.com> chad.wang<chad.wang.cn@gmail.com> suhetao<suhetao@gmail.com> Johnny<fengjihu@163.com> karthikeyan<keyanmca@gmail.com> StevenLiu<lq@chinaffmpeg.org> zhengfl<zhengfl_1989@126.com> tufang14<breadbean1449@gmail.com> allspace<allspace@gmail.com> niesongsong<nie950@gmail.com> rudeb0t<nimrod@themanxgroup.tw>
[2015-09-19 19:00:37.333][trace][18654][0] uname: Linux pi.rte.pm 4.1.6-v7+ #810 SMP PREEMPT Tue Aug 18 15:32:12 BST 2015 armv7l GNU/Linux
[2015-09-19 19:00:37.333][trace][18654][0] build: 2015-09-19 18:29:54, little-endian
[2015-09-19 19:00:37.333][trace][18654][0] configure:  --pi --with-http-api --with-stream-caster --with-stat --jobs=4
[2015-09-19 19:00:37.333][trace][18654][0] features: --prefix=/usr/local/srs --with-hls --with-hds --with-dvr --without-nginx --with-ssl --without-ffmpeg --with-transcode --with-ingest --with-stat --with-http-callback --with-http-server --with-stream-caster --with-http-api --with-librtmp --without-research --without-utest --without-gperf --without-gmc --without-gmp --without-gcp --without-gprof --without-arm-ubuntu12 --without-mips-ubuntu12 --log-trace
[2015-09-19 19:00:37.333][trace][18654][0] conf: conf/origin.conf, limit: 1000
[2015-09-19 19:00:37.333][trace][18654][0] SRS for pi
[2015-09-19 19:00:37.334][trace][18654][0] writev limits write 1024 iovs a time
[2015-09-19 19:00:37.334][warn][18654][0][2] SRS 2.0.189 is not stable, please use stable branch 1.0release instead
[2015-09-19 19:00:37.334][warn][18654][0][2] stream caster is experiment feature.
[2015-09-19 19:00:37.334][trace][18654][0] check feature rtmp handshake: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature hls: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature hds: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature http callback: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature http api: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature http server: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature http parser: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature dvr: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature transcode: on
[2015-09-19 19:00:37.334][trace][18654][0] check feature ingest: on
[2015-09-19 19:00:37.335][trace][18654][0] check feature system stat: on
[2015-09-19 19:00:37.335][warn][18654][0][2] check feature compile nginx: off
[2015-09-19 19:00:37.335][warn][18654][0][2] check feature compile ffmpeg: off
[2015-09-19 19:00:37.335][trace][18654][0] stream caster: on
[2015-09-19 19:00:37.335][trace][18654][0] MR(merged-read): on, @see https://github.com/simple-rtmp-server/srs/issues/241
[2015-09-19 19:00:37.335][trace][18654][0] MR(merged-read) default 0 sleep 350
[2015-09-19 19:00:37.335][trace][18654][0] MW(merged-write) default sleep 350
[2015-09-19 19:00:37.335][trace][18654][0] read chunk stream cache cid [0, 16)
[2015-09-19 19:00:37.335][trace][18654][0] default gop cache 1, play queue 30s
[2015-09-19 19:00:37.335][trace][18654][0] complex send algorithm enabled.
[2015-09-19 19:00:37.335][warn][18654][0][2] TCP_NODELAY enabled, may hurts performance.
[2015-09-19 19:00:37.335][trace][18654][0] auto guess socket send buffer by merged write
[2015-09-19 19:00:37.336][trace][18654][0] system default latency in ms: mw(0-350) + mr(0-350) + play-queue(0-30000)
[2015-09-19 19:00:37.336][trace][18654][0] http: root mount to ./objs/nginx/html
[2015-09-19 19:00:37.336][trace][18654][0] start deamon mode...
[2015-09-19 19:00:37.338][trace][18655][0] father process exit. ret=0
[2015-09-19 19:00:37.338][trace][18656][0] son(deamon) process running.
[2015-09-19 19:00:37.339][trace][18656][0] st_set_eventsys to epoll
[2015-09-19 19:00:37.340][trace][18656][0] st_init success, use epoll
[2015-09-19 19:00:37.341][trace][18656][100] server main cid=100
[2015-09-19 19:00:37.341][trace][18654][0] grandpa process exit.
[2015-09-19 19:00:37.342][trace][18656][100] write pid=18656 to objs/origin.pid success!
[2015-09-19 19:03:09.577][trace][18662][0] srs checking config...
[2015-09-19 19:03:09.579][warn][18662][0][0] stats disk not configed, disk iops disabled.
[2015-09-19 19:03:09.579][trace][18662][0] write log to file ./objs/origin.log
[2015-09-19 19:03:09.579][trace][18662][0] you can: tailf ./objs/origin.log
[2015-09-19 19:03:09.579][trace][18662][0] @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog
[2015-09-19 19:03:09.580][trace][18662][0] srs(simple-rtmp-server) 2.0.189
[2015-09-19 19:03:09.580][trace][18662][0] license: The MIT License (MIT), Copyright (c) 2013-2015 SRS(simple-rtmp-server)
[2015-09-19 19:03:09.580][trace][18662][0] primary/master: SRS/1.0release
[2015-09-19 19:03:09.580][trace][18662][0] authors: winlin,wenjie.zhao
[2015-09-19 19:03:09.580][trace][18662][0] contributors: winlin<winlin@vip.126.com> wenjie.zhao<740936897@qq.com> xiangcheng.liu<liuxc0116@foxmail.com> naijia.liu<youngcow@youngcow.net> alcoholyi<alcoholyi@qq.com> byteman<wangchen2011@gmail.com> chad.wang<chad.wang.cn@gmail.com> suhetao<suhetao@gmail.com> Johnny<fengjihu@163.com> karthikeyan<keyanmca@gmail.com> StevenLiu<lq@chinaffmpeg.org> zhengfl<zhengfl_1989@126.com> tufang14<breadbean1449@gmail.com> allspace<allspace@gmail.com> niesongsong<nie950@gmail.com> rudeb0t<nimrod@themanxgroup.tw>
[2015-09-19 19:03:09.580][trace][18662][0] uname: Linux pi.rte.pm 4.1.6-v7+ #810 SMP PREEMPT Tue Aug 18 15:32:12 BST 2015 armv7l GNU/Linux
[2015-09-19 19:03:09.580][trace][18662][0] build: 2015-09-19 18:29:54, little-endian
[2015-09-19 19:03:09.580][trace][18662][0] configure:  --pi --with-http-api --with-stream-caster --with-stat --jobs=4
[2015-09-19 19:03:09.580][trace][18662][0] features: --prefix=/usr/local/srs --with-hls --with-hds --with-dvr --without-nginx --with-ssl --without-ffmpeg --with-transcode --with-ingest --with-stat --with-http-callback --with-http-server --with-stream-caster --with-http-api --with-librtmp --without-research --without-utest --without-gperf --without-gmc --without-gmp --without-gcp --without-gprof --without-arm-ubuntu12 --without-mips-ubuntu12 --log-trace
[2015-09-19 19:03:09.580][trace][18662][0] conf: conf/origin.conf, limit: 1000
[2015-09-19 19:03:09.581][trace][18662][0] SRS for pi
[2015-09-19 19:03:09.581][trace][18662][0] writev limits write 1024 iovs a time
[2015-09-19 19:03:09.581][warn][18662][0][0] SRS 2.0.189 is not stable, please use stable branch 1.0release instead
[2015-09-19 19:03:09.581][warn][18662][0][0] stream caster is experiment feature.
[2015-09-19 19:03:09.581][trace][18662][0] check feature rtmp handshake: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature hls: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature hds: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature http callback: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature http api: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature http server: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature http parser: on
[2015-09-19 19:03:09.581][trace][18662][0] check feature dvr: on
[2015-09-19 19:03:09.582][trace][18662][0] check feature transcode: on
[2015-09-19 19:03:09.582][trace][18662][0] check feature ingest: on
[2015-09-19 19:03:09.582][trace][18662][0] check feature system stat: on
[2015-09-19 19:03:09.582][warn][18662][0][0] check feature compile nginx: off
[2015-09-19 19:03:09.582][warn][18662][0][0] check feature compile ffmpeg: off
[2015-09-19 19:03:09.582][trace][18662][0] stream caster: on
[2015-09-19 19:03:09.582][trace][18662][0] MR(merged-read): on, @see https://github.com/simple-rtmp-server/srs/issues/241
[2015-09-19 19:03:09.582][trace][18662][0] MR(merged-read) default 0 sleep 350
[2015-09-19 19:03:09.582][trace][18662][0] MW(merged-write) default sleep 350
[2015-09-19 19:03:09.582][trace][18662][0] read chunk stream cache cid [0, 16)
[2015-09-19 19:03:09.582][trace][18662][0] default gop cache 1, play queue 30s
[2015-09-19 19:03:09.583][trace][18662][0] complex send algorithm enabled.
[2015-09-19 19:03:09.583][warn][18662][0][0] TCP_NODELAY enabled, may hurts performance.
[2015-09-19 19:03:09.583][trace][18662][0] auto guess socket send buffer by merged write
[2015-09-19 19:03:09.583][trace][18662][0] system default latency in ms: mw(0-350) + mr(0-350) + play-queue(0-30000)
[2015-09-19 19:03:09.583][trace][18662][0] http: root mount to ./objs/nginx/html
[2015-09-19 19:03:09.583][trace][18662][0] start deamon mode...
[2015-09-19 19:03:09.585][trace][18663][0] father process exit. ret=0
[2015-09-19 19:03:09.585][trace][18664][0] son(deamon) process running.
[2015-09-19 19:03:09.586][trace][18664][0] st_set_eventsys to epoll
[2015-09-19 19:03:09.588][trace][18664][0] st_init success, use epoll
[2015-09-19 19:03:09.588][trace][18664][100] server main cid=100
[2015-09-19 19:03:09.588][trace][18662][0] grandpa process exit.
[2015-09-19 19:03:09.589][trace][18664][100] write pid=18664 to objs/origin.pid success!

Winlinvip Did you confirmed this bug?

Seems a bug. I will confirm it when I got time.

What is the minimum version of GCC and G++ to build it ?
Im thinking is something related to it, i used gcc version 4.9.2 (Debian 4.9.2-10)

I even tried building it natively on an ARM V7 machine (not pi) just using:

./configure --with-http-api --with-stream-caster --with-stat --jobs=8

It builds successfully, but does not run.

I see no errors on output, all libraries are present:

    linux-vdso.so.1 =>  (0x7ebde000)
    /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0x76fa9000)
    libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76f8f000)
    libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76ebd000)
    libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76e4c000)
    libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76e24000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76cf4000)
    /lib/ld-linux-armhf.so.3 (0x54b46000)

Very strange.

You must specifies the ./configure --arm, for SRS will patch the ST(state-threads) for ARM.
And u can specifies other cross build tools, please read https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLinuxArm#use-other-cross-build-tools

Ahh so might be that the problem, I will cross compile it using ubuntu when i got time, to check.

[2015-09-22 15:53:01.154][trace][17404][0] srs checking config...
[2015-09-22 15:53:01.154][trace][17404][0] detect intranet address: 127.0.0.1, ifname=lo
[2015-09-22 15:53:01.155][trace][17404][0] retrieve local ipv4 ip=10.1.18.55, index=0
[2015-09-22 15:53:01.155][trace][17404][0] detect intranet address: 10.1.18.55, ifname=eth0
[2015-09-22 15:53:01.155][warn][17404][0][2] stats network use index=0, ip=10.1.18.55
[2015-09-22 15:53:01.155][warn][17404][0][2] stats disk not configed, disk iops disabled.
[2015-09-22 15:53:01.155][trace][17404][0] write log to file ./objs/srs.log
[2015-09-22 15:53:01.155][trace][17404][0] you can: tailf ./objs/srs.log
[2015-09-22 15:53:01.155][trace][17404][0] @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog
[2015-09-22 15:53:01.155][trace][17404][0] srs(simple-rtmp-server) 2.0.189
[2015-09-22 15:53:01.155][trace][17404][0] license: The MIT License (MIT), Copyright (c) 2013-2015 SRS(simple-rtmp-server)
[2015-09-22 15:53:01.155][trace][17404][0] primary/master: SRS/1.0release
[2015-09-22 15:53:01.155][trace][17404][0] authors: winlin,wenjie.zhao
[2015-09-22 15:53:01.155][trace][17404][0] contributors: winlin<winlin@vip.126.com> wenjie.zhao<740936897@qq.com> xiangcheng.liu<liuxc0116@foxmail.com> naijia.liu<youngcow@youngcow.net> alcoholyi<alcoholyi@qq.com> byteman<wangchen2011@gmail.com> chad.wang<chad.wang.cn@gmail.com> suhetao<suhetao@gmail.com> Johnny<fengjihu@163.com> karthikeyan<keyanmca@gmail.com> StevenLiu<lq@chinaffmpeg.org> zhengfl<zhengfl_1989@126.com> tufang14<breadbean1449@gmail.com> allspace<allspace@gmail.com> niesongsong<nie950@gmail.com> rudeb0t<nimrod@themanxgroup.tw>
[2015-09-22 15:53:01.155][trace][17404][0] uname: Linux DLX 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
[2015-09-22 15:53:01.155][trace][17404][0] build: 2015-09-22 15:46:52, little-endian
[2015-09-22 15:53:01.155][trace][17404][0] configure:  --with-http-api --without-hls --without-ssl --without-stat --without-librtmp --jobs=16 --arm
[2015-09-22 15:53:01.155][trace][17404][0] features: --prefix=/usr/local/srs --without-hls --with-hds --with-dvr --without-nginx --without-ssl --without-ffmpeg --with-transcode --with-ingest --without-stat --with-http-callback --with-http-server --without-stream-caster --with-http-api --without-librtmp --without-research --without-utest --without-gperf --without-gmc --without-gmp --without-gcp --without-gprof --with-arm-ubuntu12 --without-mips-ubuntu12 --static --log-trace
[2015-09-22 15:53:01.155][trace][17404][0] arm tool chain: cc=arm-linux-gnueabihf-gcc gcc=arm-linux-gnueabihf-gcc g++=arm-linux-gnueabihf-g++-5 ar=arm-linux-gnueabihf-ar ld=arm-linux-gnueabihf-ld randlib=arm-linux-gnueabihf-ranlib
[2015-09-22 15:53:01.155][trace][17404][0] conf: conf/srs.conf, limit: 1000
[2015-09-22 15:53:01.155][trace][17404][0] SRS for arm(build on ubuntu)
[2015-09-22 15:53:01.155][trace][17404][0] writev limits write 1024 iovs a time
[2015-09-22 15:53:01.155][warn][17404][0][2] SRS 2.0.189 is not stable, please use stable branch 1.0release instead
[2015-09-22 15:53:01.155][warn][17404][0][2] check feature rtmp handshake: off
[2015-09-22 15:53:01.155][warn][17404][0][2] check feature hls: off
[2015-09-22 15:53:01.155][trace][17404][0] check feature hds: on
[2015-09-22 15:53:01.155][trace][17404][0] check feature http callback: on
[2015-09-22 15:53:01.155][trace][17404][0] check feature http api: on
[2015-09-22 15:53:01.156][trace][17404][0] check feature http server: on
[2015-09-22 15:53:01.156][trace][17404][0] check feature http parser: on
[2015-09-22 15:53:01.156][trace][17404][0] check feature dvr: on
[2015-09-22 15:53:01.156][trace][17404][0] check feature transcode: on
[2015-09-22 15:53:01.156][trace][17404][0] check feature ingest: on
[2015-09-22 15:53:01.156][warn][17404][0][2] check feature system stat: off
[2015-09-22 15:53:01.156][warn][17404][0][2] check feature compile nginx: off
[2015-09-22 15:53:01.156][warn][17404][0][2] check feature compile ffmpeg: off
[2015-09-22 15:53:01.156][warn][17404][0][2] stream caster: off
[2015-09-22 15:53:01.156][trace][17404][0] MR(merged-read): on, @see https://github.com/simple-rtmp-server/srs/issues/241
[2015-09-22 15:53:01.156][trace][17404][0] MR(merged-read) default 0 sleep 350
[2015-09-22 15:53:01.156][trace][17404][0] MW(merged-write) default sleep 350
[2015-09-22 15:53:01.156][trace][17404][0] read chunk stream cache cid [0, 16)
[2015-09-22 15:53:01.156][trace][17404][0] default gop cache 1, play queue 30s
[2015-09-22 15:53:01.156][trace][17404][0] complex send algorithm enabled.
[2015-09-22 15:53:01.156][warn][17404][0][2] TCP_NODELAY enabled, may hurts performance.
[2015-09-22 15:53:01.156][trace][17404][0] auto guess socket send buffer by merged write
[2015-09-22 15:53:01.156][trace][17404][0] system default latency in ms: mw(0-350) + mr(0-350) + play-queue(0-30000)
[2015-09-22 15:53:01.156][trace][17404][0] http: root mount to ./objs/nginx/html
[2015-09-22 15:53:01.156][trace][17404][0] start deamon mode...
[2015-09-22 15:53:01.157][trace][17405][0] father process exit. ret=0
[2015-09-22 15:53:01.158][trace][17406][0] son(deamon) process running.
[2015-09-22 15:53:01.158][trace][17406][0] st_set_eventsys to epoll
[2015-09-22 15:53:01.158][trace][17406][0] st_init success, use epoll
[2015-09-22 15:53:01.159][trace][17404][0] grandpa process exit.
[2015-09-22 15:53:01.159][trace][17406][100] server main cid=100
[2015-09-22 15:53:01.160][trace][17406][100] write pid=17406 to ./objs/srs.pid success!

Well today I tried two different ways, I built it using a Debian machine with cross-build-essential and --arm flag, and it compiles fine, but still don't run.

Then I tried with less options, like disable hls, hds and stream-caster but no luck either.
I'm out of ideas what could be.

What's your ARM version? Any coredumps?

root@origin:~# cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 1332.01
Features        : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfp                                                         d32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

processor       : 1
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 1332.01
Features        : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfp                                                         d32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

processor       : 2
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 1332.01
Features        : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfp                                                         d32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

processor       : 3
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 1332.01
Features        : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfp                                                         d32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

Hardware        : Marvell Armada 370/XP (Device Tree)
Revision        : 0000
Serial          : 0000000000000000
root@origin:

The raspberrypi is armv7, seems ok to run SRS, but I have not test it.
BTW, is SRS1 ok? Can you try it: http://ossrs.net/srs.release/releases/files/SRS-Ubuntu12-armv7cpu-1.0.30.zip
I will build and run in respberry-py later.

Nop, neither that version runs, friend feel free to access one of my nodes it is with Ubuntu 12.04 Precise, it is an ARM like that example before, check your email please.

Thanks.

I will try on my arm device, I not finger the bug out, I will try your device.
I got a armv6(RespberryPi1) and armv7(Cubieboard2) device.

I fix some bug for run with --pi on RespberryPi:

winlin@raspberrypi:~/srs$ cat /proc/cpuinfo
processor   : 0
model name  : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS    : 2.00
Features    : swp half thumb fastmult vfp edsp java tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xb76
CPU revision    : 7

Hardware    : BCM2708
Revision    : 000d
Serial      : 00000000445c5260

And SRS 2.0.191:

winlin@raspberrypi:~/srs$ ./objs/srs -c conf/console.conf 
[2015-09-23 03:02:47.016][trace][5644][112] RTMP client ip=192.168.1.18
[2015-09-23 03:02:47.101][trace][5644][112] complex handshake success
[2015-09-23 03:02:47.103][trace][5644][112] connect app, tcUrl=rtmp://arm:1935/live, pageUrl=, swfUrl=, schema=rtmp, vhost=__defaultVhost__, port=1935, app=live, args=null
[2015-09-23 03:02:47.105][trace][5644][112] out chunk size to 60000
[2015-09-23 03:02:47.150][trace][5644][112] input chunk size to 60000
[2015-09-23 03:02:47.152][trace][5644][112] client identified, type=fmle-publish, stream_name=livestream, duration=-1.00
[2015-09-23 03:02:47.154][trace][5644][112] source url=/live/livestream, ip=192.168.1.18, cache=1, is_edge=0, source_id=-1[-1]
[2015-09-23 03:02:47.212][trace][5644][112] start publish mr=0/350, p1stpt=20000, pnt=20000, tcp_nodelay=0, rtcid=113
[2015-09-23 03:02:47.232][trace][5644][112] got metadata, width=768, height=320, vcodec=7, acodec=10
[2015-09-23 03:02:47.234][trace][5644][112] 46B video sh,  codec(7, profile=High, level=3.2, 768x384, 0kbps, 0fps, 0s)
[2015-09-23 03:02:47.236][trace][5644][112] 4B audio sh, codec(10, profile=LC, 2channels, 0kbps, 44100HZ), flv(16bits, 2channels, 44100HZ)
[2015-09-23 03:03:01.614][trace][5644][115] RTMP client ip=192.168.1.18
[2015-09-23 03:03:01.715][trace][5644][115] complex handshake success
[2015-09-23 03:03:01.717][trace][5644][115] connect app, tcUrl=rtmp://arm/live, pageUrl=http://www.ossrs.net/players/srs_player.html?vhost=dev&stream=livestream&server=dev&port=1935, swfUrl=http://www.ossrs.net/players/srs_player/release/srs_player.swf?_version=1.26, schema=rtmp, vhost=__defaultVhost__, port=1935, app=live, args=null
[2015-09-23 03:03:01.719][trace][5644][115] out chunk size to 60000
[2015-09-23 03:03:01.745][trace][5644][115] ignored. set buffer length to 200
[2015-09-23 03:03:01.763][trace][5644][115] client identified, type=Play, stream_name=livestream, duration=-1.00
[2015-09-23 03:03:01.765][trace][5644][115] source url=/live/livestream, ip=192.168.1.18, cache=1, is_edge=0, source_id=112[112]
[2015-09-23 03:03:01.769][trace][5644][115] dispatch cached gop success. count=373, duration=5476
[2015-09-23 03:03:01.771][trace][5644][115] create consumer, queue_size=30.00, jitter=1
[2015-09-23 03:03:01.784][trace][5644][115] mw changed sleep 350=>350, max_msgs=128, esbuf=218750, sbuf 21480=>218750, realtime=0
[2015-09-23 03:03:01.785][trace][5644][115] start play smi=0.00, mw_sleep=350, mw_enabled=1, realtime=0, tcp_nodelay=0
[2015-09-23 03:03:01.787][warn][5644][115][11] resize iovs 256 => 512, max_msgs=128
[2015-09-23 03:03:01.792][trace][5644][116] ignored. set buffer length to 200
[2015-09-23 03:03:09.643][trace][5644][104] user terminate program

I will try armv7 device later.

Seems my cubieboard(armv7) corrupt, I will cross build on ubuntu14 then copy to your armv7 machine.

Thank you for your efforts fixing this really appreciate it!

winlin@ubuntu:~$ uname -a
Linux ubuntu 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

winlin@ubuntu:~$ sudo aptitude install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi

winlin@ubuntu:~$ arm-linux-gnueabi-g++ --version
arm-linux-gnueabi-g++ (Ubuntu/Linaro 4.7.3-12ubuntu1) 4.7.3

winlin@ubuntu:~$ arm-linux-gnueabi-gcc --version
arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.7.3-12ubuntu1) 4.7.3

I find a bug for cross build, introduced by SRS2 configure script refined.
Please update code, then build SRS:

./configure --arm && make

Then copy the objs/srs to your armv7 os.

Then I got another segment fault:

Program received signal SIGSEGV, Segmentation fault.
_st_thread_main () at sched.c:316
316 sched.c: No such file or directory.
(gdb) bt
#0  _st_thread_main () at sched.c:316
#1  0x000df888 in st_thread_create (start=0, arg=0x2710, joinable=918216, stk_size=-1090521796) at sched.c:591
#2  0x00082518 in SrsThread::start (this=0x2f64d0) at src/app/srs_app_thread.cpp:104
#3  0x000488a8 in SrsListener::listen (this=0x2f64b0, port=1935) at src/app/srs_app_server.cpp:168
#4  0x0004b438 in SrsServer::listen_rtmp (this=0x2d58b8) at src/app/srs_app_server.cpp:781
#5  0x0004a788 in SrsServer::listen (this=0x2d58b8) at src/app/srs_app_server.cpp:559
#6  0x000de09c in run_master () at src/main/srs_main_server.cpp:282
#7  0x000ddb70 in run () at src/main/srs_main_server.cpp:225
#8  0x000dda98 in main (argc=3, argv=0xbefff7f4) at src/main/srs_main_server.cpp:218

I finger it out, the ubuntu14 gcc/g++ version too high, which changed the longjmp context buffer layout, then cause srs/st to crash.

The version of ubuntu14 gcc/g++ to cross build srs: 4.7.3
The version which srs is ok to run on armv7, debian: 4.6.4

For gcc 4.7.3, gdb the research/arm/jmp_sp.cpp:

(gdb) p $sp
$1 = (void *) 0xbefff668
(gdb) x /64xb (char*)context[0].__jmpbuf
0x89f00 <context>:  0xa0    0xf6    0xff    0xbe    0x00    0x00    0x00    0x00
0x89f08 <context+8>:    0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x89f10 <context+16>:   0x00    0x00    0x00    0x00    0x5c    0xab    0x00    0x00
0x89f18 <context+24>:   0xfc    0xab    0x00    0x00    0x74    0xf6    0xff    0xbe
0x89f20 <context+32>:   0x3d    0xf2    0x25    0x48    0x61    0x89    0xda    0xf6
0x89f28 <context+40>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x89f30 <context+48>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x89f38 <context+56>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00

Nothing match the sp.

For gcc 4.6.3, gdb the file:


(gdb) p $sp
$1 = (void *) 0xbefff670
(gdb) x /64xb (char*)context[0].__jmpbuf
0x11040 <context>:  0x00    0x00    0x00    0x00    0xa8    0xf6    0xff    0xbe
0x11048 <context+8>:    0x39    0x84    0x00    0x00    0x70    0xf6    0xff    0xbe
0x11050 <context+16>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x11058 <context+24>:   0x00    0xf0    0x01    0x40    0x00    0x00    0x00    0x00
0x11060 <context+32>:   0x70    0xf6    0xff    0xbe    0xcf    0x84    0x00    0x00
0x11068 <context+40>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x11070 <context+48>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x11078 <context+56>:   0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00

The jmpbuf[8] is the sp.

Please read bug #190

I will try to fix the high version of gcc for arm, maybe we can use the x86-64 st setjmp and longjmp.

It's very hard to implments the setjmp and longjmp for arm for me.
I just error when glibc > 2.15.
That is, for this bug, you can build srs direclty on your armv7, not use the cross build which gcc tools glibc >2.15.
Or, for SRS:

  1. all i386/x86_64/amd64 are ok.
  2. arm only support glibc < 2.15.

I have tried your armv7 debian server, glibc is ok, srs is built to /root/srs/trunk/objs/srs

I have confirmed:

  1. SRS3 introduced some bug
  2. Ubuntu cross build tool upgraded to 4.7.3, which changed the setjmp and longjmp of glibc 2.15+, this make st(state-threads) corrupt.

For 1, I have fixed it, please use 2.0.192.
For 2, it's impossible to fix it, there is a workaround, you can build srs by gcc 4.6.3 or directly build on your armv7 server(which gcc is 4.6.3).

What happended when all gcc upgrade to 4.7? SRS cannot run on ARM, maybe SRS will migrate to GO, haha.

Directly build on your server:

cd ~/srs/trunk/ && ./configure && make -j4

U can use the following url to visit your arm server:

http://ossrs.net/console/ng_index.html#/summaries?host=192.168.1.187&port=1985

Please use your server ip.

Thank you man you are tha best!