On Sunday 25 May 2008, Sebastian Sauer wrote:
> raymond.meyer@rambler.ru wrote:
> > I can't start kde on netbsd sparc machine, because kdelibs contains code
> > that causes segfault. It terminates with "Bus error" which indicates
> > unaligned memory access. Below is the backtrace.
> >
> > The problem is with kdelibs-4.0.4/kdeui/icons/kpixmapcache.cpp. On line
> > 159 it has
> >
> > *mSize = *((quint32*)(mMemory + mSizeEntryOffset));
> >
> > So looks like a pointer to char is cast to a pointer to some form of
> > uint32_t and then dereferenced. Can anyone suggest a proper fix?
>
> iirc mMemory is the start of a buffer used to cache icons and at
> mMemory+mSizeEntryOffset is a 4byte quint32 that is used to know how much
> icons are within those buffer.
mSizeEntryOffset needs to always point to a properly aligned memory address. i.e. if memory accesses must be aligned to a multiple of 16, then mSizeEntryOffset must be a multiple of 16. Note that to my knowledge we won't hit this on x86 as that architecture will automatically (but slowly) fix it up for us.
> https://bugs.kde.org/show_bug.cgi?id=160284
I'm not sure if this is the same bug. It depends on what architecture the bug reporter is running I think. I'll try to take a look at it but low-level stuff is not my thing. ;)
Regards,
- Michael Pyne