Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LiquidSoap crashes when streaming ogg(theora,vorbis) to IceCast #799

Open
EntityinArray opened this issue May 26, 2019 · 6 comments
Open
Assignees

Comments

@EntityinArray
Copy link

Describe the bug
LiquidSoap instantly crashes when starting ogg(theora,vorbis) stream to IceCast.

Log:

2019/05/26 14:58:49 >>> LOG START
2019/05/26 14:58:49 [main:3] Liquidsoap 1.3.7 (https://github.com/savonet/liquidsoap.git@4aee97292028ac359021a801cda108f0f4985aa1:20190410:040857)
2019/05/26 14:58:49 [main:3] Using: bytes=[distributed with OCaml 4.02 or above]
pcre=7.3.4 dtools=0.4.0 duppy=0.8.0 cry=0.6.2 mm=0.4.0 ogg=0.5.2 vorbis=0.7.1 o
pus=0.1.2 speex=0.2.1 mad=0.4.6 flac=0.1.4 flac.ogg=0.1.4 dynlink=[distributed w
ith Ocaml] lame=0.3.3 gstreamer=0.3.0 fdkaac=0.2.1 theora=0.3.1 ao=0.2.1 sampler
ate=0.1.4 taglib=0.3.5 ssl=VERSION camomile=1.0.1 yojson=1.6.0 faad=0.4.0 port
audio=0.2.1 winsvc=0.1.1
2019/05/26 14:58:49 [gstreamer.loader:3] Loaded GStreamer 1.14.4 0
2019/05/26 14:58:49 [frame:3] Using 44100Hz audio, 24Hz video, 88200Hz master.
2019/05/26 14:58:49 [frame:3] Frame size must be a multiple of 7350 ticks = 3675
audio samples = 2 video samples.
2019/05/26 14:58:49 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio sa
mples = 3528 ticks.
2019/05/26 14:58:49 [frame:3] Frames last 0.08s = 3675 audio samples = 2 video s
amples = 7350 ticks.
2019/05/26 14:58:49 [threads:3] Created thread "gstreamer_main_loop" (1 total).
2019/05/26 14:58:49 [threads:3] Created thread "generic queue # 1".
2019/05/26 14:58:49 [threads:3] Created thread "generic queue # 2".
2019/05/26 14:58:49 [threads:3] Created thread "non-blocking queue # 1".
2019/05/26 14:58:49 [threads:3] Created thread "non-blocking queue # 2".
2019/05/26 14:58:49 [vidosy:3] Loading playlist...
2019/05/26 14:58:49 [vidosy:3] Playlist is a directory.
2019/05/26 14:58:49 [vidosy:3] Successfully loaded a playlist of 1 tracks.
2019/05/26 14:58:49 [entity:3] Connecting mount entity for source@localhost...
crash

Debugger said that crash happend due to unhandled exception at adress 0x000000000084A373: memory access violation when reading address 0x0000000000000000

To Reproduce
Here's the script:

set("log.level", 3)
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet.port",1234)
set("server.telnet",true)

set("frame.video.width", 848)
set("frame.video.height", 480)
set("frame.video.samplerate", 24)

source = fallback(track_sensitive = false,[playlist("videos"),blank()]) #playlist of files from .\videos

vcodec = %ogg(
	%theora(
		quality=20,
		width=848,
		height=480
	),
	%vorbis.cbr(
		samplerate=44100,
		channels=2,
		bitrate=128
	)
)

output.icecast(
	vcodec, source,
	icy_metadata="false",
	host = "localhost", port = 8000,
	password = "hackme", mount = "entity",
)

Expected behavior
LiquidSoap streams videos to IceCast

Version details

  • OS: Windows 8.1 64-bit
  • Version: 1.3.7 x64 (version 1.4.0-alpha2 has the same issue)

Install method
Downloaded an archive for Windows: liquidsoap-1.3.7-win64

@toots
Copy link
Member

toots commented May 27, 2019

Thanks for this report. Could you try with a noise() source instead of blank() and let us know what happens?

@EntityinArray
Copy link
Author

EntityinArray commented May 28, 2019

@toots

Thanks for this report. Could you try with a noise() source instead of blank() and let us know what happens?

It crashes with the same error
Log:

2019/05/28 20:02:30 >>> LOG START
2019/05/28 20:02:30 [main:3] Liquidsoap 1.3.7 (https://github.com/savonet/liquidsoap.git@4aee97292028ac359021a801cda108f0f4985aa1:20190410:040857)
2019/05/28 20:02:30 [main:3] Using: bytes=[distributed with OCaml 4.02 or above]
pcre=7.3.4 dtools=0.4.0 duppy=0.8.0 cry=0.6.2 mm=0.4.0 ogg=0.5.2 vorbis=0.7.1 o
pus=0.1.2 speex=0.2.1 mad=0.4.6 flac=0.1.4 flac.ogg=0.1.4 dynlink=[distributed w
ith Ocaml] lame=0.3.3 gstreamer=0.3.0 fdkaac=0.2.1 theora=0.3.1 ao=0.2.1 sampler
ate=0.1.4 taglib=0.3.5 ssl=VERSION camomile=1.0.1 yojson=1.6.0 faad=0.4.0 port
audio=0.2.1 winsvc=0.1.1
2019/05/28 20:02:30 [gstreamer.loader:3] Loaded GStreamer 1.14.4 0
2019/05/28 20:02:30 [frame:3] Using 44100Hz audio, 24Hz video, 88200Hz master.
2019/05/28 20:02:30 [frame:3] Frame size must be a multiple of 7350 ticks = 3675
audio samples = 2 video samples.
2019/05/28 20:02:30 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio sa
mples = 3528 ticks.
2019/05/28 20:02:30 [frame:3] Frames last 0.08s = 3675 audio samples = 2 video s
amples = 7350 ticks.
2019/05/28 20:02:30 [threads:3] Created thread "gstreamer_main_loop" (1 total).
2019/05/28 20:02:30 [threads:3] Created thread "generic queue # 1".
2019/05/28 20:02:30 [threads:3] Created thread "generic queue # 2".
2019/05/28 20:02:30 [threads:3] Created thread "non-blocking queue # 1".
2019/05/28 20:02:30 [threads:3] Created thread "non-blocking queue # 2".
2019/05/28 20:02:30 [videos:3] Loading playlist...
2019/05/28 20:02:30 [videos:3] Playlist is a directory.
2019/05/28 20:02:30 [videos:3] Successfully loaded a playlist of 1 tracks.
2019/05/28 20:02:30 [entity:3] Connecting mount entity for source@localhost...
crash

Script:

set("log.level", 3)
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet.port",1234)
set("server.telnet",true)

set("frame.video.width", 848)
set("frame.video.height", 480)
set("frame.video.samplerate", 24)

source = fallback(track_sensitive = false,[playlist("videos"),noise()]) #playlist of files from .\videos

vcodec = %ogg(
	%theora(
		quality=20,
		width=848,
		height=480
	),
	%vorbis.cbr(
		samplerate=44100,
		channels=2,
		bitrate=128
	)
)

output.icecast(
	vcodec, source,
	icy_metadata="false",
	host = "localhost", port = 8000,
	password = "hackme", mount = "entity",
)

I also tried replacing source with noise() only and it errors Theora.Invalid_data!

Thanks!

@smimram smimram added this to the 1.4.0-beta1 milestone Jun 2, 2019
@toots
Copy link
Member

toots commented Jun 5, 2019

Ok thanks. I'm working on compiling the latest beta for windows and I'll get back to you.

@toots toots self-assigned this Jun 6, 2019
@toots toots added the windows label Jun 6, 2019
@toots
Copy link
Member

toots commented Jul 1, 2019

Hi,

I can reproduce the Theora.Invalid_data exception with my latest test build for windows. I have no idea what is causing it, in particular since the same script works well on OSX and mxe seems to ship the latest libtheora for windows.

@toots toots added the bug label Aug 12, 2019
@EntityinArray
Copy link
Author

EntityinArray commented Aug 16, 2019

I noticed that in version 1.4.0 Liquidsoap streams noise() to IceCast without any crashes, but it still crashes when streaming any video file (.mp4, .webm, .mov, .flv) on Windows.

@toots
Copy link
Member

toots commented Sep 8, 2019

Hi,

We've got a lot of video-related work pending for 1.5, which is shaping up to be a major step in video support. Thus, moving this ticket to the 1.5.0 milestone, where we'll be able to tackle it after all the ground work has been merged for enhanced video support.

@toots toots modified the milestones: 1.4.0, 1.5.0 Sep 8, 2019
@toots toots removed this from the 2.0.0 milestone Aug 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants