Arts problems

Matt Cole mikaey at neb.rr.com
Wed Feb 11 04:40:58 GMT 2009


Michael Pyne wrote:
> On Tuesday 10 February 2009, Thiago Macieira wrote:
> > Matt Cole wrote:
> > >I have a Sun Ultra 10 machine, on which I have KDE 3.5 compiled, 
> up, and
> > >running, except for one component -- Arts.  Arts compiles, no problems
> > >there, but whenever it starts up, all I get is "Bus error".  I'm fairly
> > >new to the Sparc world, but I'm guessing that this is the same as a
> > >segfault on the x86 platform.
> >
> > SIGBUS and SIGSEGV are two different signals supported in both 
> platforms.
> > They have slightly different meanings, but I can never remember which is
> > which. One is access to invalid memory and the other is invalid 
> access to
> > valid memory.
>
>
> SIGSEGV is invalid memory
>
>
> SIGBUS is misaligned access to valid memory. x86 platform don't 
> generally see this since the processor/chipset/something fixes up the 
> access at a speed penalty automatically.
>
>
> What's probably happening is that some of the arts code needs to have 
> alignment forced to be correct somehow, probably someone is casting 
> out of malloc() or mmap()ed memory instead of using a struct or something.
>
>
> Regards,
> - Michael Pyne
> ------------------------------------------------------------------------
>
> _______________________________________________
> kde-multimedia mailing list
> kde-multimedia at kde.org
> https://mail.kde.org/mailman/listinfo/kde-multimedia
>   
Ok, I managed to get it working on my machine.  It may have something to 
do with the fact that I was stupid when I compiled glibc way back when, 
and ended up using nptl instead of linuxthreads.  Don't know for sure.  
Anyway, after consulting glibc for it's definition of pthread_cond_init, 
here's what I came up with as an acceptable alternative:

--- ../diff/arts-1.5.10/mcop_mt/threads_posix.cc	Sat Sep 10 03:13:32 2005
+++ mcop_mt/threads_posix.cc	Tue Feb 10 22:18:17 2009
@@ -353,7 +353,7 @@
 }
 static void pth_rec_cond_init (GslCond *cond)
 {
-	pthread_cond_init ((pthread_cond_t*) cond, NULL);
+  memset(&(((pthread_cond_t *) cond)->__data), 0, sizeof(((pthread_cond_t *) cond)->__data));
 }
 static void pth_rec_cond_wait_timed (GslCond *cond, GslMutex *mutex,
 									 gulong abs_secs, gulong abs_usecs)


Now I just need to figure out why it plays static whenever it tries to play an Ogg file...

Matt Cole



More information about the kde-multimedia mailing list