[plt-scheme] sqlite.plt seg faults with 370
Hmmm... this is getting even more interesting. I gave sqlid.plt a try, and
generated the transcript below:
Welcome to MzScheme v370 [3m], Copyright (c) 2004-2007 PLT Scheme Inc.
> (require (planet "sqli.scm" ("oesterholt" "sqlid.plt" 1 5))
(planet "sqld-sqlite.scm" ("oesterholt" "sqld-sqlite.plt" 1
0)))
> (define *dbd* (sqld-sqlite-new "/home/keithf/test.s3"))
> (define *dbh* (sqli-connect *dbd*))
> (define dbi (sqli-closure *dbh*))
> (require (lib "list.ss") (lib "etc.ss"))
> (dbi 'query "select * from notes where id > 600000 and id < 601000;")
#f
> (define x (dbi 'fetchall))
> (equal? (map (lambda (v) (string->number (car v))) x)
(build-list 999 (lambda (i) (+ i 600001))))
#t
> ; So far, so good... Now watch:
(dbi 'query "select * from notes where id > 600000 and id < 1000000;")
procedure application: expected procedure, given: #<bad-value>; arguments
were: 2 ("603504" "5dd1d22a77beecafba55698c85e243b7")
=== context ===
/home/keithf/.plt-scheme/planet/300/370/cache/oesterholt/sqld-sqlite.plt
/1/7/sqld-i-sqlite.scm:101:8: sqlite-i-callback
/home/keithf/.plt-scheme/planet/300/370/cache/oesterholt/sqld-sqlite.plt
/1/7/sqld-i-sqlite.scm:64:42: ffi-wrapper:sqlite3_exec
/home/keithf/.plt-scheme/planet/300/370/cache/oesterholt/sqld-sqlite.plt
/1/7/sqld-i-sqlite.scm:136:8: c-sqlite-query
/home/keithf/.plt-scheme/planet/300/370/cache/oesterholt/sqld-sqlite.plt
/1/7/sqld-sqlite-internal.scm:199:4
/home/keithf/.plt-scheme/planet/300/370/cache/oesterholt/sqlid.plt/1/5/sqli.scm:926:4
If you manage to track down this problem, it's probably a similar difficulty
as I'm having with sqlite.plt
On 8/31/07, Hans Oesterholt-Dijkema <hdnews at gawab.com> wrote:
>
> I experienced also seg faults with 370. However, I only noticed
> them while using threads. I think I've solved them in the sqlite driver.
> Maybe that helps? Have a go with sqld-sqlite.plt.
>
> --Hans
>
>
>
> Keith Frost schreef:
>
> Well, I'm at a loss, for now. I've gone through sqlite.ss and added 'raw
> to every malloc call in the file, and I still get random memory corruption
> and segmentation violations when running, for example
> (select *my-db* "select * from my_table where my_index > 600000 and
> my_index < 1000000")
> where there are 399999 result rows, with two columns, from my_table.
>
> I thought it might be related to callbacks, but there are no callbacks
> used in the particular code path I'm testing. It seems to me that something
> must be going awry when libsqlite3 allocates the space to hold the strings
> from the query, and sets the pointers allocated by mzscheme to point to this
> space. Is it possible that the system malloc() is getting shadowed somehow
> by mzscheme? I know that sounds crazy....
>
> By the way, this behavior is not restricted to RHEL3; I see the same
> problems on Debian Etch.
>
> Is anybody else here getting substantial, reliable use out of sqlite.plton 370 or 371? On what platform?
>
> Thanks,
>
> Keith Frost
>
> ------------------------------
>
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20070831/46bd0358/attachment.html>