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