Hi all,
I've an out of memory error with the sqlite3 (3.6.10) shell and a very small
database, in an uclinux embedded system (m68k arch).
With strace the problem is clear: sqlite3 calls "old_mmap" with length=0.
I'm running version 2.6.25-uc0 of uCLinux, so mmap returns EINVAL because
length==0, then sqlite3 says "out of memory".
The funny part is that I'm unable to get the error if the database file is
in a NFS mounted filesystem, but I always get
the error with the file in a local jffs2 filesystem.
What can I do to solve this problem?
I send you attached both strace logs.
Regards,
Roberto Lumbreras
117 execve("/nfs/sqlite3", ["/nfs/sqlite3", "/flash/config.db"], [/* 8 vars
*/]) = 0
117 ioctl(0, SNDCTL_TMR_TIMEBASE, {B9600 opost isig icanon echo ...}) = 0
117 ioctl(1, SNDCTL_TMR_TIMEBASE, {B9600 opost isig icanon echo ...}) = 0
117 ioctl(0, SNDCTL_TMR_TIMEBASE, {B9600 opost isig icanon echo ...}) = 0
117 rt_sigaction(SIGINT, {b833a6, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0
117 access("/flash/config.db", F_OK) = 0
117 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0,
0) = fc7000
117 open("/flash/config.db", O_RDWR|O_CREAT|O_LARGEFILE, 0644) = 3
117 fcntl(3, F_GETFD) = 0
117 fcntl(3, F_SETFD, FD_CLOEXEC) = 0
117 fstat(3, {st_mode=S_IFREG|0644, st_size=46080, ...}) = 0
117 lseek(3, 0, SEEK_SET) = 0
117 read(3, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\3\0\0\0\0"..., 100) = 100
117 old_mmap(NULL, 53248, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0,
0) = 3d
117 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0,
0) = 524000
117 getuid32()= 0
117 open("/etc/passwd", O_RDONLY) = 4
117 ioctl(4, SNDCTL_TMR_TIMEBASE, 42e810) = -1 ENOTTY (Not a typewriter)
117 old_mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0,
0) = 4ee000
117 read(4, "root:*:0:0:Administr"..., 4096) = 71
117 close(4) = 0
117 open("//.sqliterc", O_RDONLY) = -1 ENOENT (No such file or directory)
117 write(1, "SQLite version 3.6.10\nEnter \".he"..., 96) = 96
117 getuid32()= 0
117 open("/etc/passwd", O_RDONLY) = 4
117 ioctl(4, SNDCTL_TMR_TIMEBASE, 42e808) = -1 ENOTTY (Not a typewriter)
117 read(4, "root:*:0:0:Administr"..., 4096) = 71
117 close(4) = 0
117 write(1, "sqlite> ", 8) = 8
117 read(0, "select * from actors;\n", 4096) = 22
117 fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824,
len=1}) = 0
117 fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826,
len=510}) = 0
117 fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824,
len=1}) = 0
117 access("/flash/config.db-journal", F_OK) = -1 ENOENT (No such file or
directory)
117 fstat(3, {st_mode=S_IFREG|0644, st_size=46080, ...}) = 0
117 lseek(3, 0, SEEK_SET) = 0
117 read(3, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\3\0\0\0\0"..., 1024) = 1024
117 lseek(3, 7168, SEEK_SET) = 7168
117 read(3, "\r\0\0\0\5\0\0\0\1t\001Æ\2\3Z\0\0\0\0\0\0\0\0\0\0\0"...,
1024) = 1024
117 old_mmap(NULL, 0, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0) =
-1 EINVAL (Invalid argument)
117 fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
117 write(1, "SQL error: out of memory\n", 25) = 25
117 write(1, "sqlite> ", 8) = 8
117 read(0, "", 4096) = 0
117 close(3) = 0
117 --- SIGILL (Illegal instruction) ---
117 +++ killed by SIGILL +++
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users