On Tue, Mar 10, 2020 at 06:42:18PM +0100, Stefan Sperling wrote: > On Tue, Mar 10, 2020 at 01:21:34PM -0400, Richard Hipp wrote: > > Set a breakpoint on the sqlite3VdbeExec() function that fires when the > > statement that is crashing is first executed. (You can determine that > > it is the correct statement by looking at the value of p->zSql.) Then > > do: > > > > set p->db->flags = p->db->flags | ((0x0600000)<<32) > > > > That will turn on bytecode listing and tracing, and might provide > > further clues. Please record and send in the trace. > > I will look into this. Thanks!
Does this help? $ egdb --args svn up < GNU gdb (GDB) 7.12.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "sparc64-unknown-openbsd6.6". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from svn...done. (gdb) br sqlite3.c:83210 if p->zSql && strncmp(p->zSql, "INSERT OR REPLACE INTO", 22) == 0 No source file named sqlite3.c. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (sqlite3.c:83210 if p->zSql && strncmp(p->zSql, "INSERT OR REPLACE INTO", 22) == 0) pending. (gdb) run Starting program: /usr/local/bin/svn up Updating '.': Breakpoint 1, sqlite3Step (p=0xd69cb26608) at sqlite3.c:83210 83210 rc = sqlite3VdbeExec(p); (gdb) set p->db->flags = p->db->flags | (((unsigned long long)0x0600000)<<32) (gdb) p /x p->db->flags $1 = 0x600000e004a0e0 (gdb) c Continuing. SQL: [INSERT OR REPLACE INTO nodes ( wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, revision, presence, depth, kind, changed_revision, changed_date, changed_author, checksum, properties, translated_size, last_mod_time, dav_cache, symlink_target, file_external, moved_to, moved_here, inherited_props) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23) ] VDBE Program Listing: 0 Init 0 140 0 00 Start at 140 1 OpenWrite 0 16 0 23 00 root=16 iDb=0; NODES 2 OpenWrite 1 29 0 k(4,,,,) 00 root=29 iDb=0; I_NODES_MOVED 3 OpenWrite 2 27 0 k(5,,,,,) 00 root=27 iDb=0; I_NODES_PARENT 4 OpenWrite 3 17 0 k(3,,,) 00 root=17 iDb=0; sqlite_autoindex_NODES_1 5 Variable 1 2 0 ?1 00 r[2]=parameter(1,?1) 6 Variable 2 3 0 ?2 00 r[3]=parameter(2,?2) 7 Variable 3 4 0 ?3 00 r[4]=parameter(3,?3) 8 Variable 4 5 0 ?4 00 r[5]=parameter(4,?4) 9 Variable 5 6 0 ?5 00 r[6]=parameter(5,?5) 10 Variable 6 7 0 ?6 00 r[7]=parameter(6,?6) 11 Variable 7 8 0 ?7 00 r[8]=parameter(7,?7) 12 Variable 8 9 0 ?8 00 r[9]=parameter(8,?8) 13 Variable 22 10 0 ?22 00 r[10]=parameter(22,?22) 14 Variable 21 11 0 ?21 00 r[11]=parameter(21,?21) 15 Variable 10 12 0 ?10 00 r[12]=parameter(10,?10) 16 Variable 15 13 0 ?15 00 r[13]=parameter(15,?15) 17 Variable 9 14 0 ?9 00 r[14]=parameter(9,?9) 18 Variable 14 15 0 ?14 00 r[15]=parameter(14,?14) 19 Variable 19 16 0 ?19 00 r[16]=parameter(19,?19) 20 Variable 11 17 0 ?11 00 r[17]=parameter(11,?11) 21 Variable 12 18 0 ?12 00 r[18]=parameter(12,?12) 22 Variable 13 19 0 ?13 00 r[19]=parameter(13,?13) 23 Variable 16 20 0 ?16 00 r[20]=parameter(16,?16) 24 Variable 17 21 0 ?17 00 r[21]=parameter(17,?17) 25 Variable 18 22 0 ?18 00 r[22]=parameter(18,?18) 26 Variable 20 23 0 ?20 00 r[23]=parameter(20,?20) 27 Variable 23 24 0 ?23 00 r[24]=parameter(23,?23) 28 NewRowid 0 1 0 00 r[1]=rowid 29 HaltIfNull 1299 2 2 NODES.wc_id 01 if r[2]=null halt 30 HaltIfNull 1299 2 3 NODES.local_relpath 01 if r[3]=null halt 31 HaltIfNull 1299 2 4 NODES.op_depth 01 if r[4]=null halt 32 HaltIfNull 1299 2 9 NODES.presence 01 if r[9]=null halt 33 HaltIfNull 1299 2 12 NODES.kind 01 if r[12]=null halt 34 Integer 0 42 0 00 r[42]=0; trigger count 35 Affinity 2 22 0 DBDBDBDBDBBABBBDDBDDAD 00 affinity(r[2..23]) 36 Noop 0 0 0 00 uniqueness check for I_NODES_MOVED 37 SCopy 2 26 0 00 r[26]=r[2]; wc_id 38 SCopy 11 27 0 00 r[27]=r[11]; moved_to 39 SCopy 4 28 0 00 r[28]=r[4]; op_depth 40 IntCopy 1 29 0 00 r[29]=r[1]; rowid 41 MakeRecord 26 4 25 00 r[25]=mkrec(r[26..29]); for I_NODES_MOVED 42 ReleaseReg 26 4 0 00 release r[26..29] mask 0 43 NoConflict 1 66 26 3 00 key=r[26..28] 44 IdxRowid 1 43 0 00 r[43]=rowid 45 NotExists 0 62 43 1 00 intkey=r[43] 46 Copy 43 44 0 00 r[44]=r[43] 47 Column 0 13 58 00 r[58]=NODES.checksum 48 Column 0 0 68 00 r[68]=NODES.wc_id 49 Column 0 3 69 00 r[69]=NODES.parent_relpath 50 Column 0 1 70 00 r[70]=NODES.local_relpath 51 Column 0 2 71 00 r[71]=NODES.op_depth 52 Rowid 0 72 0 00 r[72]=rowid 53 ReleaseReg 68 5 0 00 release r[68..72] mask 0 54 IdxDelete 2 68 5 00 key=r[68..72] 55 Column 0 1 69 00 r[69]=NODES.local_relpath 56 Column 0 2 70 00 r[70]=NODES.op_depth 57 ReleaseReg 68 3 0 00 release r[68..70] mask 0 58 IdxDelete 3 68 3 00 key=r[68..70] 59 Delete 0 0 0 NODES 00 60 Delete 1 0 0 00 61 Program 44 62 73 program 00 Call: nodes_delete_trigger.replace 62 AddImm 42 1 0 00 r[42]=r[42]+1 63 Goto 0 66 0 00 bypass recheck 64 NoConflict 1 94 26 0 00 key=r[26] 65 Halt 2067 2 0 NODES.wc_id, NODES.moved_to, NODES.op_depth 02 66 ReleaseReg 43 1 0 00 release r[43] mask 0 67 Noop 0 0 0 00 uniqueness check for I_NODES_PARENT 68 SCopy 2 31 0 00 r[31]=r[2]; wc_id 69 SCopy 5 32 0 00 r[32]=r[5]; parent_relpath 70 SCopy 3 33 0 00 r[33]=r[3]; local_relpath 71 SCopy 4 34 0 00 r[34]=r[4]; op_depth 72 IntCopy 1 35 0 00 r[35]=r[1]; rowid 73 MakeRecord 31 5 30 00 r[30]=mkrec(r[31..35]); for I_NODES_PARENT 74 ReleaseReg 31 5 0 00 release r[31..35] mask 0 75 NoConflict 2 96 31 4 00 key=r[31..34] 76 IdxRowid 2 43 0 00 r[43]=rowid 77 NotExists 0 92 43 1 00 intkey=r[43] 78 Copy 43 74 0 00 r[74]=r[43] 79 Column 0 13 88 00 r[88]=NODES.checksum 80 Column 0 0 98 00 r[98]=NODES.wc_id 81 Column 0 9 99 00 r[99]=NODES.moved_to 82 Column 0 2 100 00 r[100]=NODES.op_depth 83 Rowid 0 101 0 00 r[101]=rowid 84 ReleaseReg 98 4 0 00 release r[98..101] mask 0 85 IdxDelete 1 98 4 00 key=r[98..101] 86 Column 0 1 99 00 r[99]=NODES.local_relpath 87 ReleaseReg 98 3 0 00 release r[98..100] mask 0 88 IdxDelete 3 98 3 00 key=r[98..100] 89 Delete 0 0 0 NODES 00 90 Delete 2 0 0 00 91 Program 74 92 102 program 00 Call: nodes_delete_trigger.replace 92 AddImm 42 1 0 00 r[42]=r[42]+1 93 Goto 0 96 0 00 bypass recheck 94 NoConflict 2 127 31 0 00 key=r[31] 95 Halt 2067 2 0 NODES.wc_id, NODES.parent_relpath, NODES.local_relpath, NODES.op_depth 02 96 ReleaseReg 43 1 0 00 release r[43] mask 0 97 Noop 0 0 0 00 uniqueness check for sqlite_autoindex_NODES_1 98 SCopy 2 37 0 00 r[37]=r[2]; wc_id 99 SCopy 3 38 0 00 r[38]=r[3]; local_relpath 100 SCopy 4 39 0 00 r[39]=r[4]; op_depth 101 IntCopy 1 40 0 00 r[40]=r[1]; rowid 102 MakeRecord 37 4 36 00 r[36]=mkrec(r[37..40]); for sqlite_autoindex_NODES_1 103 ReleaseReg 37 4 0 00 release r[37..40] mask 0 104 NoConflict 3 129 37 3 00 key=r[37..39] 105 IdxRowid 3 43 0 00 r[43]=rowid 106 NotExists 0 125 43 1 00 intkey=r[43] 107 Copy 43 103 0 00 r[103]=r[43] 108 Column 0 13 117 00 r[117]=NODES.checksum 109 Column 0 0 127 00 r[127]=NODES.wc_id 110 Column 0 9 128 00 r[128]=NODES.moved_to 111 Column 0 2 129 00 r[129]=NODES.op_depth 112 Rowid 0 130 0 00 r[130]=rowid 113 ReleaseReg 127 4 0 00 release r[127..130] mask 0 114 IdxDelete 1 127 4 00 key=r[127..130] 115 Column 0 0 131 00 r[131]=NODES.wc_id 116 Column 0 3 132 00 r[132]=NODES.parent_relpath 117 Column 0 1 133 00 r[133]=NODES.local_relpath 118 Column 0 2 134 00 r[134]=NODES.op_depth 119 Rowid 0 135 0 00 r[135]=rowid 120 ReleaseReg 131 5 0 00 release r[131..135] mask 0 121 IdxDelete 2 131 5 00 key=r[131..135] 122 Delete 0 0 0 NODES 00 123 Delete 3 0 0 00 124 Program 103 125 136 program 00 Call: nodes_delete_trigger.replace 125 AddImm 42 1 0 00 r[42]=r[42]+1 126 Goto 0 129 0 00 bypass recheck 127 NoConflict 3 133 37 0 00 key=r[37] 128 Halt 1555 2 0 NODES.wc_id, NODES.local_relpath, NODES.op_depth 02 129 ReleaseReg 43 1 0 00 release r[43] mask 0 130 IfNot 42 133 0 00 131 NotExists 0 64 1 00 intkey=r[1] 132 Halt 2579 2 0 NODES.rowid 02 133 MakeRecord 2 23 41 00 r[41]=mkrec(r[2..24]) 134 IdxInsert 1 25 26 4 00 key=r[25] 135 IdxInsert 2 30 31 5 00 key=r[30] 136 IdxInsert 3 36 37 3 00 key=r[36] 137 Insert 0 41 1 NODES 29 intkey=r[1] data=r[41] 138 Program -23 139 137 program 00 Call: nodes_insert_trigger.replace 139 Halt 0 0 0 00 140 Transaction 0 1 30 0 01 usesStmtJournal=1 141 TableLock 0 16 1 NODES 00 iDb=0 root=16 write=1 142 TableLock 0 7 1 PRISTINE 00 iDb=0 root=7 write=1 143 Goto 0 1 0 00 VDBE Trace: 0 Init 0 140 0 00 Start at 140 140 Transaction 0 1 30 0 01 usesStmtJournal=1 141 TableLock 0 16 1 NODES 00 iDb=0 root=16 write=1 142 TableLock 0 7 1 PRISTINE 00 iDb=0 root=7 write=1 143 Goto 0 1 0 00 1 OpenWrite 0 16 0 23 00 root=16 iDb=0; NODES 2 OpenWrite 1 29 0 k(4,,,,) 00 root=29 iDb=0; I_NODES_MOVED 3 OpenWrite 2 27 0 k(5,,,,,) 00 root=27 iDb=0; I_NODES_PARENT 4 OpenWrite 3 17 0 k(3,,,) 00 root=17 iDb=0; sqlite_autoindex_NODES_1 5 Variable 1 2 0 ?1 00 r[2]=parameter(1,?1) R[2] = i:1 6 Variable 2 3 0 ?2 00 r[3]=parameter(2,?2) R[3] = t11[file_io/os2](8) 7 Variable 3 4 0 ?3 00 r[4]=parameter(3,?3) R[4] = i:0 8 Variable 4 5 0 ?4 00 r[5]=parameter(4,?4) R[5] = t7[file_io](8) 9 Variable 5 6 0 ?5 00 r[6]=parameter(5,?5) R[6] = i:1 10 Variable 6 7 0 ?6 00 r[7]=parameter(6,?6) R[7] = t25[apr/apr/trunk/file_io/os2](8) 11 Variable 7 8 0 ?7 00 r[8]=parameter(7,?7) R[8] = i:1875080 12 Variable 8 9 0 ?8 00 r[9]=parameter(8,?8) R[9] = t6[normal](8) 13 Variable 22 10 0 ?22 00 r[10]=parameter(22,?22) R[10] = NULL 14 Variable 21 11 0 ?21 00 r[11]=parameter(21,?21) R[11] = NULL 15 Variable 10 12 0 ?10 00 r[12]=parameter(10,?10) R[12] = t3[dir](8) 16 Variable 15 13 0 ?15 00 r[13]=parameter(15,?15) R[13] = tx[2873766E3A69676E6F7265203235204D616B6566696C650A2A|(svn:ignore 25 Makefile.*] 17 Variable 9 14 0 ?9 00 r[14]=parameter(9,?9) R[14] = t8[infinity](8) 18 Variable 14 15 0 ?14 00 r[15]=parameter(14,?14) R[15] = NULL 19 Variable 19 16 0 ?19 00 r[16]=parameter(19,?19) R[16] = NULL 20 Variable 11 17 0 ?11 00 r[17]=parameter(11,?11) R[17] = i:1866019 21 Variable 12 18 0 ?12 00 r[18]=parameter(12,?12) R[18] = i:1566976038342098 22 Variable 13 19 0 ?13 00 r[19]=parameter(13,?13) R[19] = t6[jorton](8) 23 Variable 16 20 0 ?16 00 r[20]=parameter(16,?16) R[20] = NULL 24 Variable 17 21 0 ?17 00 r[21]=parameter(17,?17) R[21] = NULL 25 Variable 18 22 0 ?18 00 r[22]=parameter(18,?18) R[22] = NULL 26 Variable 20 23 0 ?20 00 r[23]=parameter(20,?20) R[23] = NULL 27 Variable 23 24 0 ?23 00 r[24]=parameter(23,?23) R[24] = NULL 28 NewRowid 0 1 0 00 r[1]=rowid R[1] = i:867 29 HaltIfNull 1299 2 2 NODES.wc_id 01 if r[2]=null halt R[2] = i:1 30 HaltIfNull 1299 2 3 NODES.local_relpath 01 if r[3]=null halt R[3] = t11[file_io/os2](8) 31 HaltIfNull 1299 2 4 NODES.op_depth 01 if r[4]=null halt R[4] = i:0 32 HaltIfNull 1299 2 9 NODES.presence 01 if r[9]=null halt R[9] = t6[normal](8) 33 HaltIfNull 1299 2 12 NODES.kind 01 if r[12]=null halt R[12] = t3[dir](8) 34 Integer 0 42 0 00 r[42]=0; trigger count R[42] = i:0 35 Affinity 2 22 0 DBDBDBDBDBBABBBDDBDDAD 00 affinity(r[2..23]) R[2] = i:1 R[3] = t11[file_io/os2](8) R[4] = i:0 R[5] = t7[file_io](8) R[6] = i:1 R[7] = t25[apr/apr/trunk/file_io/os2](8) R[8] = i:1875080 R[9] = t6[normal](8) R[10] = NULL R[11] = NULL R[12] = t3[dir](8) R[13] = tx[2873766E3A69676E6F7265203235204D616B6566696C650A2A|(svn:ignore 25 Makefile.*] R[14] = t8[infinity](8) R[15] = NULL R[16] = NULL R[17] = i:1866019 R[18] = i:1566976038342098 R[19] = t6[jorton](8) R[20] = NULL R[21] = NULL R[22] = NULL R[23] = NULL 36 Noop 0 0 0 00 uniqueness check for I_NODES_MOVED 37 SCopy 2 26 0 00 r[26]=r[2]; wc_id R[26] = i:1 <== R[2] 38 SCopy 11 27 0 00 r[27]=r[11]; moved_to R[27] = NULL <== R[11] 39 SCopy 4 28 0 00 r[28]=r[4]; op_depth R[28] = i:0 <== R[4] 40 IntCopy 1 29 0 00 r[29]=r[1]; rowid R[29] = i:867 41 MakeRecord 26 4 25 00 r[25]=mkrec(r[26..29]); for I_NODES_MOVED R[25] = sx[05090008020363|......c] 42 ReleaseReg 26 4 0 00 release r[26..29] mask 0 43 NoConflict 1 66 26 3 00 key=r[26..28] R[26] = i:1 R[27] = NULL R[28] = i:0 66 ReleaseReg 43 1 0 00 release r[43] mask 0 67 Noop 0 0 0 00 uniqueness check for I_NODES_PARENT 68 SCopy 2 31 0 00 r[31]=r[2]; wc_id R[31] = i:1 <== R[2] 69 SCopy 5 32 0 00 r[32]=r[5]; parent_relpath R[32] = t7[file_io](8) <== R[5] 70 SCopy 3 33 0 00 r[33]=r[3]; local_relpath R[33] = t11[file_io/os2](8) <== R[3] 71 SCopy 4 34 0 00 r[34]=r[4]; op_depth R[34] = i:0 <== R[4] 72 IntCopy 1 35 0 00 r[35]=r[1]; rowid R[35] = i:867 73 MakeRecord 31 5 30 00 r[30]=mkrec(r[31..35]); for I_NODES_PARENT R[30] = sx[06091B23080266696C655F696F66696C655F696F2F6F733203|...#..file_iofile_io/os2.] 74 ReleaseReg 31 5 0 00 release r[31..35] mask 0 75 NoConflict 2 96 31 4 00 key=r[31..34] R[31] = i:1 R[32] = t7[file_io](8) R[33] = t11[file_io/os2](8) R[34] = i:0 76 IdxRowid 2 43 0 00 r[43]=rowid R[43] = i:272 77 NotExists 0 92 43 1 00 intkey=r[43] R[43] = i:272 78 Copy 43 74 0 00 r[74]=r[43] R[74] = i:272 79 Column 0 13 88 00 r[88]=NODES.checksum R[88] = NULL 80 Column 0 0 98 00 r[98]=NODES.wc_id R[98] = i:1 81 Column 0 9 99 00 r[99]=NODES.moved_to R[99] = NULL 82 Column 0 2 100 00 r[100]=NODES.op_depth R[100] = i:0 83 Rowid 0 101 0 00 r[101]=rowid R[101] = i:272 84 ReleaseReg 98 4 0 00 release r[98..101] mask 0 85 IdxDelete 1 98 4 00 key=r[98..101] 86 Column 0 1 99 00 r[99]=NODES.local_relpath R[99] = s11[file_io/os2](8) 87 ReleaseReg 98 3 0 00 release r[98..100] mask 0 88 IdxDelete 3 98 3 00 key=r[98..100] 89 Delete 0 0 0 NODES 00 90 Delete 2 0 0 00 91 Program 74 92 102 program 00 Call: nodes_delete_trigger.replace 0 Init 0 1 0 -- TRIGGER nodes_delete_trigger 00 Start at 1; Start: nodes_delete_trigger.replace (AFTER DELETE ON NODES) 1 Param 14 1 0 00 r[1]=old.checksum R[1] = NULL 2 IsNull 1 32 0 00 if r[1]==NULL goto 32 R[1] = NULL 32 Halt 0 0 0 00 End: nodes_delete_trigger.replace 92 AddImm 42 1 0 00 r[42]=r[42]+1 R[42] = i:0 93 Goto 0 96 0 00 bypass recheck 96 ReleaseReg 43 1 0 00 release r[43] mask 0 97 Noop 0 0 0 00 uniqueness check for sqlite_autoindex_NODES_1 98 SCopy 2 37 0 00 r[37]=r[2]; wc_id R[37] = i:1 <== R[2] 99 SCopy 3 38 0 00 r[38]=r[3]; local_relpath R[38] = t11[file_io/os2](8) <== R[3] 100 SCopy 4 39 0 00 r[39]=r[4]; op_depth R[39] = i:0 <== R[4] 101 IntCopy 1 40 0 00 r[40]=r[1]; rowid R[40] = i:867 102 MakeRecord 37 4 36 00 r[36]=mkrec(r[37..40]); for sqlite_autoindex_NODES_1 R[36] = sx[050923080266696C655F696F2F6F73320363|..#..file_io/os2.c] 103 ReleaseReg 37 4 0 00 release r[37..40] mask 0 104 NoConflict 3 129 37 3 00 key=r[37..39] R[37] = i:1 R[38] = t11[file_io/os2](8) R[39] = i:0 129 ReleaseReg 43 1 0 00 release r[43] mask 0 130 IfNot 42 133 0 00 R[42] = i:1 131 NotExists 0 64 1 00 intkey=r[1] R[1] = i:867 64 NoConflict 1 94 26 0 00 key=r[26] R[26] = i:1 assertion "pIn3->flags & MEM_Blob" failed: file "sqlite3.c", line 89376, function "sqlite3VdbeExec" Program received signal SIGABRT, Aborted. *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57 57 memset(&sa, 0, sizeof(sa)); (gdb) _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users