Ok, I have tried your test program.
SEGFAULTS, as you said
Program received signal SIGSEGV, Segmentation fault.
0x0000003cc2279acd in gst_element_link_pads_filtered () from /usr/lib64/libgstreamer-0.10.so.0
#0 0x0000003cc2279acd in gst_element_link_pads_filtered () from /usr/lib64/libgstreamer-0.10.so.0
#1 0x0000000000400a85 in connect ()
#2 0x0000003cad047914 in ?? () from /usr/lib64/libX11.so.6
#3 0x0000003cad047152 in _X11TransConnect () from /usr/lib64/libX11.so.6
#4 0x0000003cad022968 in _X11TransConnectDisplay () from /usr/lib64/libX11.so.6
#5 0x0000003cad036f96 in XOpenDisplay () from /usr/lib64/libX11.so.6
#6 0x00002aaaaeb9859c in gst_pad_peer_accept_caps () from /usr/lib64/gstreamer-0.10/libgstximagesink.so
#7 0x00002aaaaeb99b38 in gst_pad_peer_accept_caps () from /usr/lib64/gstreamer-0.10/libgstximagesink.so
#8 0x0000003cc223d1d0 in gst_element_change_state () from /usr/lib64/libgstreamer-0.10.so.0
#9 0x0000003cc223d60d in ?? () from /usr/lib64/libgstreamer-0.10.so.0
#10 0x0000003cc222f074 in ?? () from /usr/lib64/libgstreamer-0.10.so.0
#11 0x0000003cc223d1d0 in gst_element_change_state () from /usr/lib64/libgstreamer-0.10.so.0
#12 0x0000003cc223d60d in ?? () from /usr/lib64/libgstreamer-0.10.so.0
#13 0x0000000000400c86 in player ()
#14 0x0000000000400ccb in main ()
It has X-related calls in the backtrace, so I guess the problem is we didn't initialize something needed by that window to be shown.
I have tried to call XInitThreads and XOpenDisplay prior to any gstreamer code, but it doesn't change anything.
I will check with gstreamer community and post my findings here.
On Mon, Jun 18, 2012 at 1:58 AM, <email@example.com>
I can't reproduce the ghci segfault. I can only think of two avenues
Quoting Milan Markovi? <firstname.lastname@example.org
> 2. When I construct a graph to test my filter in following code
and load the code in ghci it SEGFAULTs. When I
> compile and run everything seems OK but no ximagesink's window ever
> appears. Did I forget to initialize something in Glib? gst-launch with the
> exact same filters shows the window.
to pursue here:
1. Have you tried using ghci -fno-ghci-sandbox?
2. By any chance, are you using GHC 7.2? Somebody mentioned on
#haskell the other day that they were having some problems with GHC
7.2 and I haven't had a chance to attempt to reproduce them.
As for the ximagesink window not appearing, I think the right next
step is to ask a gstreamer expert. For example, we could post a
question to StackOverflow or similar. Likely the gstreamer experts
will want to read C code, so I made an attempt at a straightforward
translation of your code to C: <http://hpaste.org/70088>. However, it
segfaults on the gst_element_set_state line. If you can get that code
running, then we can do one of two things:
1. if no ximagesink window appears, then it's not gtk2hs' fault, and
we can ask a gstreamer expert for more help
2. if an ximagesink window does appear, then we can investigate the
difference between the calls gtk2hs is making and the calls the C
version is making