On Thu, May 28, 2009 at 04:00:07PM -0400, D. Richard Hipp wrote:
> These are tests that simulate a malloc() failure (aka "out-of-memory"  
> or OOM fault) to verify that nothing crashes or leaks following an OOM  
> fault and that an SQLITE_NOMEM error is reported back out at the top  
> level.  The problem here seems to be that the SQLITE_NOMEM is not  
> making it back up to the top.  This is not a serious error because (1)  
> nothing crashed and (2) you probably will never hit a real OOM fault  
> on virtual-memory platform like Solaris anyhow.

Thanks.  Solaris can definitely return ENOMEM.  The Solaris VM subsystem
does not oversubscribe memory+swap (there's no OOM killer in Solaris).

> To debug, set a breakpoint on sqlite3Fault().  That routine is called  
> whenever an OOM fault is simulated.  Run to the point of the OOM fault  
> that is causing the problem.  Figure out which malloc() is falling and  
> why the problem is not being reported back up to the top level.

How would I run a single test?

> I really did run a complete regression with no errors on Linux x86,  
> x86_64, and mac x86 prior to releasing 3.6.14.2.  I'm very curious to  
> know what is different about Solaris that is causing the extra  
> undetected OOM fault.

I'll let you know.  What I'll do (once I know how to run a single test
:) is use DTrace like this:

# Run the test, catch a call to sqlite3Fault(), print a stack trace,
# stop the process, and exit.
dtrace -w -n 'pid$target::sqlite3Fault:entry{ustack(); stop(); exit();}' 
<sqlite3 test>

Then I'll use DTrace again to trace all function call entry/return
events as the program unwinds, something like this:

# Set the stopped program to run and trace the time on every function
# call and all return values.
dtrace -F -n 'BEGIN {system("prun $1");}' \
        -n 'pid$1:::entry{trace(timestamp);}' \
        -n 'pid$1:::return{trace(arg1);}' <PID of the stopped program>

> > Also, I got this more serious looking test failure on x86, 32-bit:
> >
> > perm-memsubsys1.fts3expr-3.18...
> > Expected: [AND one wo]
> >     Got: [AND one woe]

Did you mean to tell me about this one?

Nico
-- 
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to