Again: innd got SIGBUS (fwd)
mirecki at nask.pl
Tue Dec 19 15:05:53 UTC 2000
On Tue, 19 Dec 2000, Katsuhiro Kondou wrote:
> Mirek Luc <mirecki at nask.pl> wrote;
> } ICDiovset() tried to access data beyond the end of the active file.
> I don't think so. innd tries to write active in a size
> when mmap'ed.
Right. But I shrank the active file by hand. In ICDiovset():
where: base == ICDactpointer (mmap returned it),
iovp->iov_len == ICDactsize (initial size of mmap'ed active)
So memcpy tried to copy data from non-existent area (near the and of the
"old" active file, before editing by hand). And this caused SIGBUS. In my
opinion of course.
> I'm not sure if the problem is OS issue.
I don't know how mmap works in other OSes but Solaris' mmap(2) says:
The mmap() function allows [pa, pa + len) to extend beyond
the end of the object both at the time of the mmap() and
while the mapping persists, such as when the file is created
prior to the mmap() call and has no contents, or when the
file is truncated. Any reference to addresses beyond the end
of the object, however, will result in the delivery of a
SIGBUS or SIGSEGV signal. The mmap() function cannot be used
to implicitly extend the length of files.
ICDiovset() (memcpy) tried "Any reference to addresses beyond the end of
the object". That was in my case I think.
> Anyone runs innd on Solaris8 successfully?
innd works fine for me.:-) Except throttle / edit active / go.
More information about the inn-workers