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