[GRASS-dev] v.digit crash

Markus Neteler neteler at itc.it
Wed May 2 16:46:53 EDT 2007


On Wed, May 02, 2007 at 08:51:32PM +0200, Markus Neteler wrote:
> HI,
> 
> I managed to crash the new v.digit by editing the "streams"
> map of the new NC dataset. I tried to insert a new point
> (outlet), then
> 
> g.copy vect=streams,mystreams
> v.digit mystreams
> X Error of failed request:  BadAlloc (insufficient resources for operation)
>   Major opcode of failed request:  53 (X_CreatePixmap)
>   Serial number of failed request:  4353
>   Current serial number in output stream:  4361
> 
> 
> strace v.digit mystreams
> ....
> write(8, "\3\30\2\0\313\0\0\4\16\0\2\0\313\0\0\4", 16) = 16
> read(8, "\1\0\375\t\3\0\0\0!\0\0\0\1\0\1\1\377\377\377\377\0\0\0"..., 32) = 32
> read(8, "\177\200\301\0\177\200\301\0\0\0\37\10", 12) = 12
> read(8, "\1\30\376\t\0\0\0\0\242\0\0\0\4\0C\1a\256\26\0\0\0\0\0"..., 32) = 32
> write(8, "\10\30\2\0\313\0\0\4>\0\7\0\303\0\0\4\277\0\0\4\177\0\0"..., 188) = 188
> write(7, "\0", 1)                       = 1
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 1
> futex(0x8705388, FUTEX_WAKE, 1)         = 1
> futex(0x870538c, FUTEX_WAIT, 471, NULL) = -1 EAGAIN (Resource temporarily unavailable)
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 0
> gettimeofday({1178131672, 506046}, {4294967176, 0}) = 0
> ioctl(8, FIONREAD, [64])                = 0
> read(8, "\17\360\377\t\313\0\0\4\1\2\0\0\337\2\0\0\377\177\0\0\223"..., 64) = 64
> write(7, "\0", 1)                       = 1
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 1
> futex(0x8705388, FUTEX_WAKE, 1)         = 1
> futex(0x870538c, FUTEX_WAIT, 473, NULL) = -1 EAGAIN (Resource temporarily unavailable)
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 0
> gettimeofday({1178131672, 507598}, {4294967176, 0}) = 0
> write(8, "5\30\4\0\303\0\0\4\275\0\0\4\21\0\340\1F\0\5\0\303\0\0"..., 1424) = 1424
> write(7, "\0", 1)                       = 1
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 1
> futex(0x8705388, FUTEX_WAKE, 1)         = 1
> futex(0x870538c, FUTEX_WAIT, 475, NULL) = -1 EAGAIN (Resource temporarily unavailable)
> futex(0x83b93e8, FUTEX_WAKE, 1)         = 0
> gettimeofday({1178131672, 509871}, {4294967176, 0}) = 0
> ioctl(8, FIONREAD, [288])               = 0
> read(8, "\0\v;\n\303\0\0\4\0\0005\0\0\0\0\0\20\0\0\0\235q\t\10\0"..., 288) = 288
> open("/usr/share/X11/XErrorDB", O_RDONLY) = 9
> fstat64(9, {st_mode=S_IFREG|0644, st_size=37949, ...}) = 0
> read(9, "! $Xorg: XErrorDB,v 1.3 2000/08/"..., 37949) = 37949
> close(9)                                = 0
> brk(0xbf45000)                          = 0xbf45000
> write(2, "X Error of failed request:  BadA"..., 78X Error of failed request:  BadAlloc (insufficient resources for operation)
>   ) = 78
> write(2, "Major opcode of failed request: "..., 35Major opcode of failed request:  53) = 35
> write(2, " (X_CreatePixmap)\n", 18 (X_CreatePixmap)
> )     = 18
> write(2, "  ", 2  )                       = 2
> write(2, "Serial number of failed request:"..., 38Serial number of failed request:  2619) = 38
> write(2, "\n  ", 3
>   )                     = 3
> write(2, "Current serial number in output "..., 45Current serial number in output stream:  2627) = 45
> write(2, "\n", 1
> )                       = 1
> exit_group(1)                           = ?
> Process 26510 detached
> 
> 
> I see that it tried to open the database table form then zap.
> 
> v.db.connect -p mystreams
> Vector map <mystreams> is connected by:
> layer <1> table <mystreams> in database </home/neteler/grassdata/nc_spm_04/sqlite/sqlite.db> through driver <sqlite> with key <cat>
> 
> Please suggest how to debug this one.

Digging further into this, I found out that it doesn't crash with the DBF
driver. So it is related to the SQLite driver.

Here some more debugging stuff:
http://mpa.itc.it/markus/tmp/vdigit_settings_sqlite.png
(how the table definition looks like in v.digit - all 99999 lengths!)

DEBUG=2 output, put here to not make the mail too long:
http://mpa.itc.it/markus/tmp/vdigit_settings_sqlite.txt

There are various size=99999 there which come from
db/drivers/sqlite/describe.c

   113          fsize = 99999; /* sqlite doesn't care, it must be long enough to
   114                            satisfy tests in GRASS */

Last year I changes fsize from -1 to 99999 for v.in.ascii:

2006-07-04 11:24  markus
        * describe.c: define sufficient length to make v.in.ascii functional

So far it worked. The trick seems to be to get it fixed for the form in
v.digit.

Markus




More information about the grass-dev mailing list