errno 24 is EMFILE "Too many open files".  You almost certainly have a
file-descriptor leak.

-scott


On Wed, Oct 14, 2015 at 12:52 AM, Andrew Miles <andy at blandsrow.com> wrote:

> Fully opening the directory failed to fix the issue.  So in summary the
> program works for days then dies with this in the log:
>
> (14) cannot open file at line 28488 of [f5b5a13f73]
> (14) os_unix.c:28488: (24) open(/usr/share/cm160) -
> (14) cannot open file at line 28488 of [f5b5a13f73]
> (14) os_unix.c:28488: (24) open(/usr/share/cm160) -
> (14) cannot open file at line 30285 of [f5b5a13f73]
> (14) os_unix.c:30285: (24) open(/usr/share/cm160/eagleowl_stat.db-journal)
> -
> (14) statement aborts at 29: [UPDATE energy_hour_stat SET status = 1 WHERE
> record_count = 60]
>
> Any advice on what could be causing this?
>
> Andy
>
> On 11 October 2015 at 20:56, Andrew Miles <andy at blandsrow.com> wrote:
>
> > Thanks
> >
> > Log showed it unable to open the directory and then unable to write the
> > journal file.  The directory is root writable and the process is run as
> > root so I didn't expect a problem here.  I've now modified the directory
> > access to be writable by all to see if that changes things.
> >
> > Andy
> >
> > On 5 October 2015 at 11:39, Richard Hipp <drh at sqlite.org> wrote:
> >
> >> On 10/5/15, Andrew Miles <andy at blandsrow.com> wrote:
> >> > Hi
> >> >
> >> > I have a strange issue with a piece of C code using sqlite3.  The code
> >> runs
> >> > for days and then stops on an SQL insert into db with the error code
> >> > SQLITE_CANTOPEN.
> >> >
> >> > Further info:
> >> >
> >> > 1) The program is a status monitoring app - it writes values into the
> >> SQL
> >> > db once every 60 seconds.  Average duration is about 2 days before
> >> dying so
> >> > roughly 3000 successful writes before failure.
> >> > 2) The SQL db is kept open for the entire time i.e. I don't open/close
> >> on
> >> > every transaction.
> >> > 3) There is another process accessing the same db but read only
> >> > 4) I tried waiting 5 secs on the first CANTOPEN and trying again in
> case
> >> > the other process had locked the db but same message.  Even closing
> the
> >> db
> >> > and reopening won't free the error.  The only method is to stop the
> >> program
> >> > and restart, then it works again every time.
> >> > 5) I ran lsof on the db, only one process (this one) had the file open
> >> > 6) The extended error code reported is 14 i.e. no further information
> >> > 7) Disk has 5GB free
> >> >
> >> > Any advice on how to debug further?
> >> >
> >>
> >> Activate the error and warning log.  https://www.sqlite.org/errlog.html
> >>
> >> --
> >> D. Richard Hipp
> >> drh at sqlite.org
> >> _______________________________________________
> >> sqlite-users mailing list
> >> sqlite-users at mailinglists.sqlite.org
> >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >>
> >
> >
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to