VLC crashes when u try to run multiple instances of it

This forum is about all development around libVLC.
ghazzalyahmad
Blank Cone
Blank Cone
Posts: 12
Joined: 23 Jul 2010 15:23

VLC crashes when u try to run multiple instances of it

Postby ghazzalyahmad » 23 Jul 2010 16:34

Hello everyone,

I am currently writing an application where it can display up to 12 monitors of live video streams. The problem that I am currently facing that when I start/stop the application sometimes I get a java fatal error. After searching about the problem, it seems that making multiple calls in quick succession to libvlc_media_player_play causes a crash, according to the VLCJ website: http://code.google.com/p/vlcj/wiki/Mult ... rInstances. There is written the following:
"The VLCJ bindings are generally stable and hard crashes in the Java Virtual Machine due to native library failures usually don't occur.
However, when using multiple video player instances the chance for instability and hard crashes increases.
..., when there are up to three video player instances everything is still stable.
However, with more than three video player instances there is a chance of a fatal native library crash, apparently due to a race condition during start-up. If the race condition does not materialise then all instances will play videos correctly.
These crashes occur in native libraries and there's not much that VLCJ can do about it.
The main cause of failure seems to be as a result of making multiple calls in quick succession to libvlc_media_player_play. It is possible to workaround this problem (to some degree) by staggering the play calls (e.g. with a one second delay between calls)."

I did try the workaround (showed improvement, but still it is no guarantee that it won't crash), however having 1 second delay between the calls is a bit too much and it doesn't always work.

I am wondering if this is a known problem and the VLC-team will attempt to fix it in VLC 1.1.2?

And is there a command-line parameter that can be used to avoid this problem?

Thanks in advance for your help.. :)

Gr.
Ahmed

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 23 Jul 2010 17:13

From the point of view of the Java bindings, the reason I said I think there's a race is that I can see no pattern in the failures - sometimes it works just fine for me, sometimes it crashes. Same code, same video files. Increasing the number of instances seems to make it more likely to crash, but even then it doesn't always crash. I have very little experience in debugging native libraries when JVM crashes occur so I don't really know what I can do about it from the Java side.

I'm not saying vlc is causing the crash, I'm saying I don't know what's causing the crash.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 12:05

I am wondering if this is a known problem and the VLC-team will attempt to fix it in VLC 1.1.2?
There were a number of issues in LibVLC 1.0.
There are no known (crash) issues in LibVLC 1.1.1, and only accept bug reports concerning the native API, since we do not maintain the bindings.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 12:22

I post here in the hope that anyone has any ideas, not because I blame vlc for errors.

What I see from valgrind (I'm very new to that tool) when the error we're discussing occurs (against 1.1.1) is this:

Code: Select all

java: tpp.c:63: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= __sched_fifo_min_prio && new_prio <= __sched_fifo_max_prio)' failed. ./test.sh: line 3: 11911 Aborted valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes java -cp $CP $MAINCLASS
The top google result for me refers to this post but I have no idea if it's relevant to vlc: http://sourceware.org/ml/libc-help/2008 ... 00072.html

Unfortunately from the Java side I have no idea what to do about this.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 12:45

Looks like a bug in valgrind. What does gdb say?
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 14:21

Looks like a bug in valgrind. What does gdb say?
I've posted here backtraces and thread lists for the three different types of failures I've seen when using gdb.

I see different types of failures and which particular failure occurs at any particular time is unpredictable.

I can't be sure any of these back-traces refers to the valgrind error above, but all of these errors do occur when I use multiple media player instances (without staggering the libvlc_media_player_play calls).

I pulled the 1.1 maintenance branch and did a full build configured with --enable-debug and --disable-optimizations.

This is the version and changeset I am running these tests against:

* 1.1.2-git The Luggage
* 1.1.1-22-gc7cc7c2

This usually happens first...

Code: Select all

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffb065f710 (LWP 11165)] 0x00007fffb2741034 in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 (gdb) bt #0 0x00007fffb2741034 in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 #1 0x00007fffaea20c70 in Create (p_this=0x7fffb8347e38) at freetype.c:392 #2 0x00007fffcc276236 in module_need (p_this=0x7fffb8347e38, psz_capability=0x7fffcc2c0379 "text renderer", psz_name=0x0, b_strict=false) at modules/modules.c:559 #3 0x00007fffcc253a0b in SpuRenderCreateAndLoadText (p_spu=0x7fffb8347358) at video_output/vout_subpictures.c:1000 #4 0x00007fffcc251d89 in spu_Create (p_this=0x7fffb83421d8) at video_output/vout_subpictures.c:231 #5 0x00007fffcc24a03a in vout_Create (p_parent=0x7fffc82e46b8, p_fmt=0x7fffb065e7c0) at video_output/video_output.c:412 #6 0x00007fffcc2499a9 in vout_Request (p_this=0x7fffc82e46b8, p_vout=0x0, p_fmt=0x7fffb065e7c0) at video_output/video_output.c:273 #7 0x00007fffcc239dcc in RequestVout (p_resource=0x405a1a20, p_vout=0x0, p_fmt=0x7fffb065e7c0, b_recycle=true) at input/resource.c:245 #8 0x00007fffcc23a6cd in input_resource_RequestVout (p_resource=0x405a1a20, p_vout=0x0, p_fmt=0x7fffb065e7c0, b_recycle=true) at input/resource.c:463 #9 0x00007fffcc21d6d7 in vout_new_buffer (p_dec=0x7fffb80357d8) at input/decoder.c:2332 #10 0x00007fffcc21855c in decoder_NewPicture (p_decoder=0x7fffb80357d8) at input/decoder.c:187 #11 0x00007fffb17dd6cc in ffmpeg_NewPictBuf (p_dec=0x7fffb80357d8, p_context=0x41366200) at video.c:185 #12 0x00007fffb17df033 in ffmpeg_GetFrameBuf (p_context=0x41366200, p_ff_pic=0x415d6840) at video.c:953 #13 0x00007fffb0eabfdc in alloc_picture () from /usr/lib/libavcodec.so.52 #14 0x00007fffb0eac81e in MPV_frame_start () from /usr/lib/libavcodec.so.52 #15 0x00007fffb0fe67d5 in ?? () from /usr/lib/libavcodec.so.52 #16 0x00007fffb0fefc96 in ?? () from /usr/lib/libavcodec.so.52 #17 0x00007fffb1013182 in ?? () from /usr/lib/libavcodec.so.52 #18 0x00007fffb1013a2b in ?? () from /usr/lib/libavcodec.so.52 #19 0x00007fffb0e64598 in avcodec_decode_video () from /usr/lib/libavcodec.so.52 #20 0x00007fffb17de3bb in DecodeVideo (p_dec=0x7fffb80357d8, pp_block=0x7fffb065ed60) at video.c:550 #21 0x00007fffcc21b724 in DecoderDecodeVideo (p_dec=0x7fffb80357d8, p_block=0x7fffb4c79d50) at input/decoder.c:1466 #22 0x00007fffcc21c30e in DecoderProcessVideo (p_dec=0x7fffb80357d8, p_block=0x7fffb4c79d50, b_flush=false) at input/decoder.c:1831 #23 0x00007fffcc21c8fb in DecoderProcess (p_dec=0x7fffb80357d8, p_block=0x7fffb4c79d50) at input/decoder.c:2003 #24 0x00007fffcc21a086 in DecoderThread (p_this=0x7fffb80357d8) at input/decoder.c:892 #25 0x00007fffcc27e7e1 in thread_entry (data=0x4063fc00) at misc/threads.c:58 #26 0x00007ffff7bc59ca in start_thread (arg=<value optimised out>) at pthread_create.c:300 #27 0x00007ffff771e6fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #28 0x0000000000000000 in ?? () (gdb) info threads 42 Thread 0x7fffa1800710 (LWP 11176) __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97 41 Thread 0x7fffaa804710 (LWP 11174) 0x00007ffff7711f83 in *__GI___poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=30000) at ../sysdeps/unix/sysv/linux/poll.c:87 40 Thread 0x7fffa6002710 (LWP 11175) 0x00007ffff7711f83 in *__GI___poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=29998) at ../sysdeps/unix/sysv/linux/poll.c:87 39 Thread 0x7fffafa49710 (LWP 11173) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 38 Thread 0x7fffaff58710 (LWP 11172) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 37 Thread 0x7fffb0059710 (LWP 11171) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 36 Thread 0x7fffb015a710 (LWP 11170) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 35 Thread 0x7fffb025b710 (LWP 11169) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:140 34 Thread 0x7fffb045d710 (LWP 11167) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:140 33 Thread 0x7fffb035c710 (LWP 11168) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:140 32 Thread 0x7fffb055e710 (LWP 11166) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 * 31 Thread 0x7fffb065f710 (LWP 11165) 0x00007fffb2741034 in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 30 Thread 0x7fffb0760710 (LWP 11164) 0x00007fffb2740fe3 in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 29 Thread 0x7fffb0861710 (LWP 11163) 0x00007fffb274139e in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 28 Thread 0x7fffb0962710 (LWP 11162) 0x00007fffb274d9bb in ?? () from /usr/lib/libfontconfig.so.1 27 Thread 0x7fffc1d7c710 (LWP 11161) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 26 Thread 0x7fffc1e7d710 (LWP 11160) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 25 Thread 0x7fffc1f7e710 (LWP 11159) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 24 Thread 0x7fffc4127710 (LWP 11158) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 23 Thread 0x7fffc4228710 (LWP 11157) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 22 Thread 0x7fffc4329710 (LWP 11156) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 21 Thread 0x7fffc442a710 (LWP 11155) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 20 Thread 0x7fffc452b710 (LWP 11154) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 19 Thread 0x7fffc472d710 (LWP 11153) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 18 Thread 0x7fffc618b710 (LWP 11150) __pthread_mutex_lock (mutex=0x0) at pthread_mutex_lock.c:50 17 Thread 0x7fffc628c710 (LWP 11149) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 16 Thread 0x7fffc638d710 (LWP 11148) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 15 Thread 0x7fffc6ac8710 (LWP 11147) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 14 Thread 0x7fffcc924710 (LWP 11146) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 13 Thread 0x7fffcca25710 (LWP 11145) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 12 Thread 0x7fffccb26710 (LWP 11144) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 11 Thread 0x7fffccc27710 (LWP 11143) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 10 Thread 0x7fffccd28710 (LWP 11142) sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86 9 Thread 0x7fffcce68710 (LWP 11141) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 8 Thread 0x7fffccf69710 (LWP 11140) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 7 Thread 0x7fffcd06a710 (LWP 11139) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 6 Thread 0x7fffcd863710 (LWP 11138) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 5 Thread 0x7fffcd964710 (LWP 11137) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 4 Thread 0x7fffcda65710 (LWP 11136) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 3 Thread 0x7fffcdb66710 (LWP 11135) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 2 Thread 0x7ffff690c710 (LWP 11134) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 1 Thread 0x7ffff7ecc700 (LWP 11131) 0x00007ffff7bc703d in pthread_join (threadid=140737330071312, thread_return=0x7fffffffbf80) at pthread_join.c:89 (gdb)
Followed by this (after restarting the program being debugged)...

Code: Select all

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffb0962710 (LWP 11207)] 0x00007fffb273ec34 in ?? () from /usr/lib/libfontconfig.so.1 (gdb) bt #0 0x00007fffb273ec34 in ?? () from /usr/lib/libfontconfig.so.1 #1 0x00007fffb273f3cc in ?? () from /usr/lib/libfontconfig.so.1 #2 0x00007fffb273f479 in ?? () from /usr/lib/libfontconfig.so.1 #3 0x00007fffb273ef6d in ?? () from /usr/lib/libfontconfig.so.1 #4 0x00007fffb273f06a in FcDirCacheLoad () from /usr/lib/libfontconfig.so.1 #5 0x00007fffb2745c15 in FcDirCacheRead () from /usr/lib/libfontconfig.so.1 #6 0x00007fffb2741aae in ?? () from /usr/lib/libfontconfig.so.1 #7 0x00007fffb2741d36 in FcConfigBuildFonts () from /usr/lib/libfontconfig.so.1 #8 0x00007fffb274aefb in FcInitLoadConfigAndFonts () from /usr/lib/libfontconfig.so.1 #9 0x00007fffb274afc5 in FcInit () from /usr/lib/libfontconfig.so.1 #10 0x00007fffb2740ee7 in FcConfigGetCurrent () from /usr/lib/libfontconfig.so.1 #11 0x00007fffb2741652 in FcConfigSubstituteWithPat () from /usr/lib/libfontconfig.so.1 #12 0x00007fffaeb21c70 in Create (p_this=0x41f4f2a8) at freetype.c:392 #13 0x00007fffcc276236 in module_need (p_this=0x41f4f2a8, psz_capability=0x7fffcc2c0379 "text renderer", psz_name=0x0, b_strict=false) at modules/modules.c:559 #14 0x00007fffcc253a0b in SpuRenderCreateAndLoadText (p_spu=0x41166a98) at video_output/vout_subpictures.c:1000 #15 0x00007fffcc251d89 in spu_Create (p_this=0x41f4a2b8) at video_output/vout_subpictures.c:231 #16 0x00007fffcc24a03a in vout_Create (p_parent=0x404a5488, p_fmt=0x7fffb09617c0) at video_output/video_output.c:412 #17 0x00007fffcc2499a9 in vout_Request (p_this=0x404a5488, p_vout=0x0, p_fmt=0x7fffb09617c0) at video_output/video_output.c:273 #18 0x00007fffcc239dcc in RequestVout (p_resource=0x7fffc83e3a60, p_vout=0x0, p_fmt=0x7fffb09617c0, b_recycle=true) at input/resource.c:245 #19 0x00007fffcc23a6cd in input_resource_RequestVout (p_resource=0x7fffc83e3a60, p_vout=0x0, p_fmt=0x7fffb09617c0, b_recycle=true) at input/resource.c:463 #20 0x00007fffcc21d6d7 in vout_new_buffer (p_dec=0x404a5e48) at input/decoder.c:2332 #21 0x00007fffcc21855c in decoder_NewPicture (p_decoder=0x404a5e48) at input/decoder.c:187 #22 0x00007fffb17dd6cc in ffmpeg_NewPictBuf (p_dec=0x404a5e48, p_context=0x404434c0) at video.c:185 #23 0x00007fffb17df033 in ffmpeg_GetFrameBuf (p_context=0x404434c0, p_ff_pic=0x4114b8e0) at video.c:953 #24 0x00007fffb0eabfdc in alloc_picture () from /usr/lib/libavcodec.so.52 #25 0x00007fffb0eac81e in MPV_frame_start () from /usr/lib/libavcodec.so.52 #26 0x00007fffb0fe67d5 in ?? () from /usr/lib/libavcodec.so.52 #27 0x00007fffb0fefc96 in ?? () from /usr/lib/libavcodec.so.52 #28 0x00007fffb1013182 in ?? () from /usr/lib/libavcodec.so.52 #29 0x00007fffb1013a2b in ?? () from /usr/lib/libavcodec.so.52 #30 0x00007fffb0e64598 in avcodec_decode_video () from /usr/lib/libavcodec.so.52 #31 0x00007fffb17de3bb in DecodeVideo (p_dec=0x404a5e48, pp_block=0x7fffb0961d60) at video.c:550 #32 0x00007fffcc21b724 in DecoderDecodeVideo (p_dec=0x404a5e48, p_block=0x403f5b60) at input/decoder.c:1466 #33 0x00007fffcc21c30e in DecoderProcessVideo (p_dec=0x404a5e48, p_block=0x403f5b60, b_flush=false) at input/decoder.c:1831 #34 0x00007fffcc21c8fb in DecoderProcess (p_dec=0x404a5e48, p_block=0x403f5b60) at input/decoder.c:2003 #35 0x00007fffcc21a086 in DecoderThread (p_this=0x404a5e48) at input/decoder.c:892 #36 0x00007fffcc27e7e1 in thread_entry (data=0x7fffc90ca970) at misc/threads.c:58 #37 0x00007ffff7bc59ca in start_thread (arg=<value optimised out>) at pthread_create.c:300 #38 0x00007ffff771e6fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #39 0x0000000000000000 in ?? () (gdb) info threads 38 Thread 0x7fffaef2d710 (LWP 11216) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 37 Thread 0x7fffaee2c710 (LWP 11217) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 36 Thread 0x7fffaf02e710 (LWP 11215) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 35 Thread 0x7fffaf12f710 (LWP 11214) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 34 Thread 0x7fffaf495710 (LWP 11213) 0x00007ffff7711f83 in *__GI___poll (fds=<value optimised out>, nfds=<value optimised out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 33 Thread 0x7fffb0258710 (LWP 11212) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 32 Thread 0x7fffb055e710 (LWP 11211) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 31 Thread 0x7fffb065f710 (LWP 11210) 0x00007fffb274db70 in ?? () from /usr/lib/libfontconfig.so.1 30 Thread 0x7fffb0760710 (LWP 11209) 0x00007ffff7df3eea in mmap64 () at ../sysdeps/unix/syscall-template.S:82 29 Thread 0x7fffb0861710 (LWP 11208) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 * 28 Thread 0x7fffb0962710 (LWP 11207) 0x00007fffb273ec34 in ?? () from /usr/lib/libfontconfig.so.1 27 Thread 0x7fffc1d7c710 (LWP 11206) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 26 Thread 0x7fffc1e7d710 (LWP 11205) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 25 Thread 0x7fffc1f7e710 (LWP 11204) 0x00007ffff297dd5a in ?? () 24 Thread 0x7fffc4127710 (LWP 11203) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 23 Thread 0x7fffc4228710 (LWP 11202) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 22 Thread 0x7fffc4329710 (LWP 11201) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 21 Thread 0x7fffc442a710 (LWP 11200) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 20 Thread 0x7fffc452b710 (LWP 11199) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 19 Thread 0x7fffc472d710 (LWP 11198) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 18 Thread 0x7fffc618b710 (LWP 11195) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 17 Thread 0x7fffc628c710 (LWP 11194) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 16 Thread 0x7fffc638d710 (LWP 11193) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 15 Thread 0x7fffc6ac8710 (LWP 11192) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 14 Thread 0x7fffcc924710 (LWP 11191) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 13 Thread 0x7fffcca25710 (LWP 11190) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 12 Thread 0x7fffccb26710 (LWP 11189) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 11 Thread 0x7fffccc27710 (LWP 11188) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 10 Thread 0x7fffccd28710 (LWP 11187) sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86 9 Thread 0x7fffcce68710 (LWP 11186) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 8 Thread 0x7fffccf69710 (LWP 11185) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 7 Thread 0x7fffcd06a710 (LWP 11184) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 6 Thread 0x7fffcd863710 (LWP 11183) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 5 Thread 0x7fffcd964710 (LWP 11182) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 4 Thread 0x7fffcda65710 (LWP 11181) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 3 Thread 0x7fffcdb66710 (LWP 11180) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 2 Thread 0x7ffff690c710 (LWP 11179) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 1 Thread 0x7ffff7ecc700 (LWP 11178) 0x00007ffff7bc703d in pthread_join (threadid=140737330071312, thread_return=0x7fffffffbf80) at pthread_join.c:89 (gdb)
I see mostly these ones - which maybe indicates a Java VM issue? Obviously the missing parts of the trace don't help.

Code: Select all

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffc618b710 (LWP 10636)] __pthread_mutex_lock (mutex=0x0) at pthread_mutex_lock.c:50 50 pthread_mutex_lock.c: No such file or directory. in pthread_mutex_lock.c (gdb) bt #0 __pthread_mutex_lock (mutex=0x0) at pthread_mutex_lock.c:50 #1 0x00007fffc76f0e47 in XrmQGetResource () from /usr/lib/libX11.so.6 #2 0x00007fffc76e7fac in XStringToKeysym () from /usr/lib/libX11.so.6 #3 0x00007fffc77187fa in _XimParseStringFile () from /usr/lib/libX11.so.6 #4 0x00007fffc7716965 in _XimLocalOpenIM () from /usr/lib/libX11.so.6 #5 0x00007fffc77151e6 in _XimOpenIM () from /usr/lib/libX11.so.6 #6 0x00007fffcc08b2ef in OpenXIMCallback () from /home/java/jdk1.6.0_21/jre/lib/amd64/xawt/libmawt.so #7 0x00007fffc7714f6a in _XimRegisterIMInstantiateCallback () from /usr/lib/libX11.so.6 #8 0x00007fffc76f9eef in XRegisterIMInstantiateCallback () from /usr/lib/libX11.so.6 #9 0x00007fffcc08b3d3 in Java_sun_awt_X11_XInputMethod_openXIMNative () from /home/java/jdk1.6.0_21/jre/lib/amd64/xawt/libmawt.so #10 0x00007ffff297cc88 in ?? () #11 0x00007ffff2970d00 in ?? () #12 0x00007fffc8290800 in ?? () #13 0x00007fffc8290800 in ?? () #14 0x00007fffc6189b08 in ?? () #15 0x00007fffce829a58 in ?? () #16 0x00007fffc6189b78 in ?? () #17 0x00007fffce832fb0 in ?? () #18 0x0000000000000000 in ?? () (gdb) info threads 39 Thread 0x7fffaed2b710 (LWP 10659) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 38 Thread 0x7fffafd53710 (LWP 10658) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 37 Thread 0x7fffb0059710 (LWP 10657) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 36 Thread 0x7fffb025b710 (LWP 10655) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 35 Thread 0x7fffb015a710 (LWP 10656) 0x00007ffff771013d in open64 () at ../sysdeps/unix/syscall-template.S:82 34 Thread 0x7fffb035c710 (LWP 10654) 0x00007ffff771aa57 in mprotect () at ../sysdeps/unix/syscall-template.S:82 33 Thread 0x7fffb045d710 (LWP 10653) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 32 Thread 0x7fffb055e710 (LWP 10652) 0x00007ffff7deb751 in _dl_name_match_p (name=0x7fffc82e49c0 "/home/linux/vlc/lib/libpulse_plugin.so", map=0x40111470) at dl-misc.c:301 31 Thread 0x7fffb065f710 (LWP 10651) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 30 Thread 0x7fffb0760710 (LWP 10650) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 29 Thread 0x7fffb0861710 (LWP 10649) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 28 Thread 0x7fffb0962710 (LWP 10648) __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 27 Thread 0x7fffc1d7c710 (LWP 10647) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 26 Thread 0x7fffc1e7d710 (LWP 10646) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 25 Thread 0x7fffc1f7e710 (LWP 10645) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 24 Thread 0x7fffc4127710 (LWP 10644) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 23 Thread 0x7fffc4228710 (LWP 10643) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 22 Thread 0x7fffc4329710 (LWP 10642) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 21 Thread 0x7fffc442a710 (LWP 10641) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 20 Thread 0x7fffc452b710 (LWP 10640) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 19 Thread 0x7fffc472d710 (LWP 10639) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 * 18 Thread 0x7fffc618b710 (LWP 10636) __pthread_mutex_lock (mutex=0x0) at pthread_mutex_lock.c:50 17 Thread 0x7fffc628c710 (LWP 10635) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 16 Thread 0x7fffc638d710 (LWP 10634) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 15 Thread 0x7fffc6ac8710 (LWP 10633) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 14 Thread 0x7fffcc924710 (LWP 10632) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 13 Thread 0x7fffcca25710 (LWP 10631) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 12 Thread 0x7fffccb26710 (LWP 10630) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 11 Thread 0x7fffccc27710 (LWP 10629) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 10 Thread 0x7fffccd28710 (LWP 10628) sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86 9 Thread 0x7fffcce68710 (LWP 10627) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 8 Thread 0x7fffccf69710 (LWP 10626) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 7 Thread 0x7fffcd06a710 (LWP 10625) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:211 6 Thread 0x7fffcd863710 (LWP 10624) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 5 Thread 0x7fffcd964710 (LWP 10623) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 4 Thread 0x7fffcda65710 (LWP 10622) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 3 Thread 0x7fffcdb66710 (LWP 10621) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 2 Thread 0x7ffff690c710 (LWP 10620) pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162 1 Thread 0x7ffff7ecc700 (LWP 10619) 0x00007ffff7bc703d in pthread_join (threadid=140737330071312, thread_return=0x7fffffffbf80) at pthread_join.c:89 (gdb)
I hope this is what you're asking for, I'm not familiar much with these tools.

I'm happy to run more tests and provide more info if you think this is worth pursuing.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 14:31

The last one is most likely because your process fails to call XInitThreads() before the first use of Xlib. I don't know about the first ones, but they're deep within FontConfig.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 15:12

The last one is most likely because your process fails to call XInitThreads() before the first use of Xlib. I don't know about the first ones, but they're deep within FontConfig.
Thanks for looking over that.

I don't think I can do anything about it in the Java bindings - if like you say something is failing to call XInitThreads() at the right time, then that is something that is presumably hidden deep inside the Java VM. We never deal with Xlib directly at all in Java applications.

So I guess to go back to the OP, there's nothing that can be done. If it's a JVM bug, complain to Oracle or the OpenJDK people.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 15:29

It's not necessarily a bug in the JVM. If AWT only uses Xlib from a single (native) thread per process, not calling XInitThreads() is perfectly legitimate. I don't know its internals, but I guess that is the case.

Then you're simply not allowed to use Xlib from any other (native) thread than the one using AWT. That implies LibVLC cannot use Xlib; the "--no-xlib" was created for that particular case. Unfortunately, it means the PulseAudio audio outputs, and the OpenGL/GLX, SDL and ASCII Art video outputs will be disabled.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 15:57

It's not necessarily a bug in the JVM. If AWT only uses Xlib from a single (native) thread per process, not calling XInitThreads() is perfectly legitimate. I don't know its internals, but I guess that is the case.
That's interesting, thanks.

I'd like to hear from the OP if this simplistic workaround resolves the issue for him/her.

Code: Select all

mediaPlayer.play(); while(!mediaPlayer.isPlaying()) { Thread.yield(); }
This works reliably for me, and it gives hope that with further work I can encapsulate a proper workaround in the Java bindings (basically to make sure calls to libvlc_media_player_play are serialised and wait for the player to start between calls). Maybe using events would be better than the yield loop, and there are obvious issues to address like what if isPlaying never returns true. I'll do some more work on this.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 16:24

--no-xlib is already used by the Mozilla plugin for the same reason.

We have spent a lot of time making sure libvlc proper is reentrant. I would not recommend going the hack route.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 18:09

--no-xlib is already used by the Mozilla plugin for the same reason.

We have spent a lot of time making sure libvlc proper is reentrant. I would not recommend going the hack route.
Hmm... ok. I guess for now I will leave it up the client application to decide if they want to try disabling xlib or try doing the hack approach themselves, rather than hacking inside the bindings.

It only affects users who need to create multiple instances so I suspect most users probably won't care.

Thanks again for the discussion and pointers on this.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 18:21

That's not true. The probably that the crash increases dramatically with the number of instances, due to the application of the birthday paradox to race conditions. But it can happen even with a single instance. In fact, it is very likely to cause a crash when AWT cleans up after itself, regardless of the number of instances.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 24 Jul 2010 18:50

That's not true. The probably that the crash increases dramatically with the number of instances, due to the application of the birthday paradox to race conditions. But it can happen even with a single instance. In fact, it is very likely to cause a crash when AWT cleans up after itself, regardless of the number of instances.
OK, I accept what you're saying and I will try and resolve it because obviously I don't want to cause crashes, but at this moment I don't know what I can realistically do about it inside the bindings.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 24 Jul 2010 20:21

At the bindings level, the only solution is to always pass --no-xlib.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 25 Jul 2010 09:29

At the bindings level, the only solution is to always pass --no-xlib.
Yes that does indeed get rid of one of the types of crash.

I'm still doing a lot of tests and work on this because now that I have most of the functionality I want exposed in the bindings I want to focus on the reliability and eliminating crashes.

So...

Something else is still going wrong because I still see random font config crashes (as described earlier), and now I see new random other crashes.

Here's a flavour of the new errors (mostly the JVM crashes soon afterwards):

Code: Select all

Fontconfig error: "/etc/fonts/conf.d/65-fonts-persian.conf", line 190: <match target="scan"> cannot edit user-defined object "(null)" [0x7fd6c4e75980] jack audio output error: failed to connect to JACK server [0x7fd6c4e75980] oss audio output error: cannot open audio device (/dev/dsp) [0x7fd6bc12ea40] freetype spu text error: Failed to get fontfile [0x40dd78d0] freetype spu text error: Failed to get fontfile (process:3646): Pango-CRITICAL **: pango_coverage_get: assertion `coverage != NULL' failed ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM �8|C
(I made sure I compiled and installed the latest alsa.)

Here's some more random anecdotal observations...

If the JVM does not crash immediately, I sometimes see some of the media player instances stop playing video after a short while.

With "--no-audio" I see only the fontconfig errors causing VM crashes.

Sometimes, but rarely, the multi-instance test I have starts and runs perfectly no matter what args I pass to libvlc.

If I do the isRunning hack described earlier, it works 100% - I know that's not the right answer, I just say it for something to compare against.

The same behaviour happens whether I embed the output or leave it for libvlc to open up it's own video windows.

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 25 Jul 2010 09:55

I must say, I don't know if fontconfig is internally thread safe. But it might also be that the process ran out of memory (I expect fontconfig/freetype do large-ish allocations).

The ALSA one looks odd, especially out of the blue.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 25 Jul 2010 10:01

The ALSA one looks odd, especially out of the blue.
Sorry for any confusion, those errors weren't all in sequence from the same session.

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 25 Jul 2010 11:13

So next I did a build of vlc with --disable-font-config. If I use that build in conjunction with --no-xlib libvlc args then, as you'd probably expect, I get much less JVM crashes, but still get some.

I also still randomly get ALSA warnings and other errors dumped to the console, here's the latest example:

Code: Select all

java: conf.c:3778: snd_config_iterator_first: Assertion `config->type == SND_CONFIG_TYPE_COMPOUND' failed.
The only post I could find regarding thread-safetiness of fontconfig was some release notes here http://qt.nokia.com/developer/changes/changes-4.5.2/ which stated "[241361] Prevented asynchronous access to non-thread safe libfontconfig API".

I do feel like I'm pushing the problem around from one sub-system to the next!

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 25 Jul 2010 11:25

Looks like ALSA is not thread-safe then. Starting only one media at a time only reduces the chances of hitting the problem though.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

ghazzalyahmad
Blank Cone
Blank Cone
Posts: 12
Joined: 23 Jul 2010 15:23

Re: VLC crashes when u try to run multiple instances of it

Postby ghazzalyahmad » 26 Jul 2010 14:44

Hi everyone,

First of all, thanks a million for the discussion and great insight on this problem.

I tried the --no-xlib and it works, it doesn't crash as often, however it still does sometimes, but not as bas as before. Unfortunately I am not very familiar on how to capture the error and show what the problem is. I don't even get any logs about the error. If someone can tell me how I would capture it, I would love to try and post it. However, i can also provide a working sample of the application.

Again thanks for the support... :)

sherington
Cone that earned his stripes
Cone that earned his stripes
Posts: 491
Joined: 10 Sep 2008 11:57
VLC version: master
Operating System: Linux

Re: VLC crashes when u try to run multiple instances of it

Postby sherington » 26 Jul 2010 17:02

If someone can tell me how I would capture it, I would love to try and post it. However, i can also provide a working sample of the application.
I don't think you're going to be able to capture anything we don't already know about. FontConfig is seemingly not thread-safe, ALSA is seemingly not thread-safe. A single-threaded Java application calling multiple libvlc_play_media in quick succession will lead to crashes.

As of right now, I would do the isPlaying() -> yield() hack as previously described in this thread. Whilst far from ideal, it's all you can do for now if --no-xlib etc is not working 100% for you.

ghazzalyahmad
Blank Cone
Blank Cone
Posts: 12
Joined: 23 Jul 2010 15:23

Re: VLC crashes when u try to run multiple instances of it

Postby ghazzalyahmad » 03 Aug 2010 16:49

The isPlaying() -> yield() hack.. caused me more problems. it also caused the application to crash. Is there a way (like the --no-xlib) to also disable the FontConfig and ALSA..?

Rémi Denis-Courmont
Developer
Developer
Posts: 15143
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: VLC crashes when u try to run multiple instances of it

Postby Rémi Denis-Courmont » 03 Aug 2010 17:03

The only way to disable fontconfig is to compile VLC without it (--disable-fontconfig). This is likely to break all OSD functionality.

To disable ALSA, you need to force another audio output, or to compile VLC without ALSA, and without SDL_audio (which probably wraps ALSA). Since --no-xlib disables PulseAudio, that leaves no option but OSS. OSS does typically not support multiple clients, and there is most probably already one (PulseAudio daemon, another VLC instance, the desktop environment, etc), so you can basically forget audio.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

ghazzalyahmad
Blank Cone
Blank Cone
Posts: 12
Joined: 23 Jul 2010 15:23

Re: VLC crashes when u try to run multiple instances of it

Postby ghazzalyahmad » 03 Aug 2010 17:34

Thanks for the quick reply.

Seeing that your one of the VLC team, is there a way in which these functionalities would be thread safe any time soon, in one of the coming releases?


Return to “Development around libVLC”

Who is online

Users browsing this forum: No registered users and 6 guests