[gst-devel] Re: Thoughts from FreeBSD on the upcoming GNOME 2.2
Joe Marcus Clarke
marcus at FreeBSD.org
Wed Nov 13 20:22:03 CET 2002
On Wed, 2002-11-13 at 16:55, David Schleef wrote:
> On Wed, Nov 13, 2002 at 12:20:04PM -0500, Joe Marcus Clarke wrote:
> > I actually thought of that myself last night. I'm going to try and get
> > GStreamer working with our linuxthreads port. I'll keep you posted on
> > my results.
>
> It might be easier and also more helpful to get the new GThread code
> working. I'm hoping that it will help to find some of its bugs, too.
>
> > > > Our pthreads implementation does not allow
> > > > applications to longjump between thread contexts.
>
> Gstreamer doesn't change contexts between threads. It splits up
> the stack of a single thread into multiple cothreads, and longjumps
> (or equivalent) between contexts in a single thread. I don't think
> this should be a problem with most threading implementations.
Attached is a hack that gets gstreamer working on FreeBSD. The problem
seems to be that FreeBSD's initial thread stack size is only 1 MB.
gstreamer wants a 2 MB stack. FreeBSD's pthread implementation sees
this, and thinks gstreamer is trying to jump threads (i.e. the 2 MB
stack address is outside of the current thread's stack).
Basically what I do is lower gstreamer's stack size to 1 MB, and, to
maintain the cothread stack size ratio, I lower the number of threads
from 8 to 16. This gets gst-launch running at least. I don't know if
it's actually doing the right thing, though. Here is some of the
output:
INFO ( 9750: 0) Initializing GStreamer Core Library version 0.4.2
INFO ( 9750: 0) CPU features: (0c040843) MMX SSE
registry: loaded user_registry in 0.000493 seconds
(/root/.gstreamer/registry.xml)
registry: loaded global_registry in 0.029583 seconds
(/usr/local/etc/gstreamer/registry.xml)
GStreamer-INFO: 0 live buffer(s)
GStreamer-INFO: 0 live bufferpool(s)
GStreamer-INFO: 0 live event(s)
RUNNING pipeline
fakesrc0: last-message = "get ******* (fakesrc0:src)> (0 bytes, 0)
0x8076800"
fakesink0: last-message = "chain ******* (fakesink0:sink)< (0 bytes,
0) 0x8076800"
fakesrc0: last-message = "get ******* (fakesrc0:src)> (0 bytes, 1)
0x8076800"
fakesink0: last-message = "chain ******* (fakesink0:sink)< (0 bytes,
1) 0x8076800"
fakesrc0: last-message = "get ******* (fakesrc0:src)> (0 bytes, 2)
0x8076800"
fakesink0: last-message = "chain ******* (fakesink0:sink)< (0 bytes,
2) 0x8076800"
Joe
>
>
>
> dave...
>
> _______________________________________________
> desktop-devel-list mailing list
> desktop-devel-list at gnome.org
> http://mail.gnome.org/mailman/listinfo/desktop-devel-list
--
Joe Marcus Clarke
FreeBSD GNOME Team :: marcus at FreeBSD.org
http://www.FreeBSD.org/gnome
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-gst_cothreads.c
Type: text/x-c
Size: 443 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20021113/5e602ad8/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20021113/5e602ad8/attachment.pgp>
More information about the gstreamer-devel
mailing list