On Fri, Aug 19, 2011 at 10:10 AM, Pavel Ivanov <paiva...@gmail.com> wrote:

> > If that is indeed the case, the current code will cause corruption on an
> > EINTR on such platforms because the EINTR handling does not account for a
> > non-0 write.
>
> No, it won't cause corruption. Because SQLite uses pwrite or its
> alternative with calls to lseek and write. So after interruption it
> will start writing at the same position it wrote previous time
> rewriting part of what it has already written with the same data.
>

The problem comes up if SQLite is configured to not use pwrite() and instead
make separate calls to lseek() followed by write().  The do-loop that
retries after an EINTR was not rerunning the lseek().  I my testing a patch
for for this now.  http://www.sqlite.org/src/info/e59bdf6116


>
>
> Pavel
>
>
> On Fri, Aug 19, 2011 at 8:48 AM, Stephan Beal <sgb...@googlemail.com>
> wrote:
> > On Thu, Aug 18, 2011 at 6:10 PM, Stephan Beal <sgb...@googlemail.com>
> wrote:
> >
> >> On Thu, Aug 18, 2011 at 5:27 PM, David Garfield <
> >> garfi...@irving.iisd.sra.com> wrote:
> >>
> >>> I HOPE that an interrupt in a large interrupted write will NOT return
> >>
> >> EINTR, because if it does, the partial write is screwed up.
> >>>
> >>
> >> i hope so, too! :-D
> >>
> >
> > It would seem that at least one environment does allow that behaviour.
> From
> > the Linux write(2) man pages:
> >
> > ----
> > CONFORMING TO
> >       SVr4, 4.3BSD, POSIX.1-2001.
> >
> >       Under SVr4 a write may be interrupted and return EINTR at any
> point,
> > not just before any data is written.
> > ----
> >
> > So this just might actually (potentially) affect some sqlite3 users. i
> don't
> > know if Solaris currently uses SysV or posix semantics, but Solaris was
> once
> > known as SVr4 (SysV, v.4)?
> >
> > If that is indeed the case, the current code will cause corruption on an
> > EINTR on such platforms because the EINTR handling does not account for a
> > non-0 write.
> >
> > http://kb.iu.edu/data/agjs.html
> > http://en.wikipedia.org/wiki/System_V
> > The German page has release dates and easier-to-read inheritance details:
> > http://de.wikipedia.org/wiki/System_V
> > http://en.wikipedia.org/wiki/Solaris_(operating_system)
> >
> > --
> > ----- stephan beal
> > http://wanderinghorse.net/home/stephan/
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users@sqlite.org
> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> >
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>



-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to