I don't recall off the top of my head whether the
location of that
shared block of memory is in the per-process swappable kernel data
(which is included in the process core dump).
So I checked, and the swappable per-process kernel data does in fact include
pre-computed contents for all the memory management registers, so we'll be
able to see (from the process core dump) where the code and data segments
were.
On another front, that error message ("Memory error") is produced when a
process gets a 'memory management trap' (trap to 0250). This could be caused
by any number of things (it's a pity we don't know the contents of SR0 when
the trap happened, that would tell us exactly what the cause was).
With working hardware+OS, it's usually the result of a bad pointer in the
program. In a tested program like 'ls', I don't think that's the case.
It's
most likely caused by faulty memory, but it's also faintly possible that the
MMU has an issue.
I'll look at the process dump a little later today, and see if I see anything
of significance.
Noel