monotone

Issue 52: crash when running 'regenerate_rosters' on NetBSD src and pkgsrc repositories.

Reported by Unknown User, Sep 19, 2006

(This entry was imported from the savannah tracker, original 
location: https://savannah.nongnu.org/bugs/index.php?17801)

I trigger graph.cc:72: invariant 'I(!next.empty())' violated

When attempting to migrate the NetBSD src and pkgsrc repositories 
from 0.28/0.29 to 0.30.  The crash happens shortly after starting 
the regenerate_rosters step.

The same crash can be triggered trying to cvs_import the same 
repository using a fresh 0.30 database.  I'm currently testing to 
see whether it is also triggered via netsync pulling from 0.29 into 
an empty 0.30 db.

the dump for the regenerate_rosters case ends:




prepared statement DELETE FROM rosters WHERE id = ?
prepared statement INSERT INTO roster_deltas (id, base, checksum, 
delta) VALUES (?, ?, ?, ?)
prepared statement SELECT base FROM roster_deltas WHERE id = ?
graph.cc:72: invariant 'I(!next.empty())' violated
saving current work set: 11 items
finished saving work set
prepared statement ROLLBACK
statement cache statistics
prepared 18 statements
1 executions of BEGIN EXCLUSIVE
1 executions of DELETE FROM next_roster_node_number
1 executions of DELETE FROM roster_deltas
1 executions of DELETE FROM rosters
24 executions of DELETE FROM rosters WHERE id = ?
1 executions of INSERT INTO next_roster_node_number VALUES(?)
24 executions of INSERT INTO roster_deltas (id, base, checksum, 
delta) VALUES (?, ?, ?, ?)
49 executions of INSERT INTO rosters (id, checksum, data) VALUES (?, 
?, ?)
1 executions of ROLLBACK
49 executions of SELECT 1 FROM rosters WHERE id = ? LIMIT 1
1 executions of SELECT base FROM roster_deltas WHERE id = ?
24 executions of SELECT checksum, data FROM rosters WHERE id = ?
119 executions of SELECT data FROM revisions WHERE id = ?
2 executions of SELECT id FROM revisions
668960 executions of SELECT node FROM next_roster_node_number
94 executions of SELECT parent FROM revision_ancestry WHERE child = ?
1 executions of SELECT parent,child FROM revision_ancestry
668959 executions of UPDATE next_roster_node_number SET node = ?
Current work set: 11 items
----- begin 'full_version_string' (in virtual void 
mtn_sanity::initialize(int, char**, const char*), at 
mtn-sanity.cc:20)
monotone 0.30 (base revision: unknown)
Running on          : NetBSD 3.99.21 NetBSD 3.99.21 (_resurgam_) #28
: Mon Jul  3 12:56:33 EST 2006  
dan@resurgam:/home/NetBSD/obj/amd64/home/NetBSD/HEAD/src/sys/arch/amd
64/compile/_r
esurgam_ amd64
C++ compiler        : Unknown ISO C++ Compiler
C++ standard library: Unknown ISO standard library
Boost version       : 1_33_1
Changes since base revision:
unknown
-----   end 'full_version_string' (in virtual void 
mtn_sanity::initialize(int, char**, const char*), at 
mtn-sanity.cc:20)
----- begin 'system_flavour' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:60)
NetBSD 3.99.21 NetBSD 3.99.21 (_resurgam_) #28: Mon Jul  3 12:56:33 
EST 2006  
dan@resurgam:/home/NetBSD/obj/amd64/home/NetBSD/HEAD/src/sys/arch/amd
64/compile/_resurgam_ amd64
-----   end 'system_flavour' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:60)
----- begin 'cmdline_string' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:74)
'mtn', 'db', 'regenerate_rosters'
-----   end 'cmdline_string' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:74)
----- begin 'string(lc_all)' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:79)
C
-----   end 'string(lc_all)' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:79)
----- begin '*ros_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1761)
root dir is NULL
-----   end '*ros_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1761)
----- begin '*mm_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1762)

-----   end '*mm_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1762)
----- begin 'roster_manifest_id' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1764)

-----   end 'roster_manifest_id' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1764)
----- begin 'rev' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1817)
format_version "1"

new_manifest [6babd6a7e9a0ddc6b4980870699e3379ade29192]

old_revision [879183870ad6cd621c85228e8ce0926b344c53cb]
-----   end 'rev' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1817)
----- begin 'new_rid' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1818)
9d2d776b3605666641438a8c01cf712f557d3ac4
-----   end 'new_rid' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1818)
----- begin 'new_roster' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1819)
root dir is NULL
-----   end 'new_roster' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1819)
----- begin 'new_markings' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1820)

-----   end 'new_markings' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1820)



the dump for the import case is similar:

----- begin 'full_version_string' (in virtual void 
mtn_sanity::initialize(int, char**, const char*), at 
mtn-sanity.cc:20)
monotone 0.30 (base revision: unknown)
Running on          : NetBSD 3.99.21 NetBSD 3.99.21 (_resurgam_) #28
: Mon Jul  3 12:56:33 EST 2006  
dan@resurgam:/home/NetBSD/obj/amd64/home/NetBSD/HEAD/src/sys/arch/amd
64/compile/_r
esurgam_ amd64
C++ compiler        : Unknown ISO C++ Compiler
C++ standard library: Unknown ISO standard library
Boost version       : 1_33_1
Changes since base revision:
unknown
-----   end 'full_version_string' (in virtual void 
mtn_sanity::initialize(int, char**, const char*), at 
mtn-sanity.cc:20)
----- begin 'system_flavour' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:60)
NetBSD 3.99.21 NetBSD 3.99.21 (_resurgam_) #28: Mon Jul  3 12:56:33 
EST 2006  
dan@resurgam:/home/NetBSD/obj/amd64/home/NetBSD/HEAD/src/sys/arch/amd
64/compile/_resurgam_ amd64
-----   end 'system_flavour' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:60)
----- begin 'cmdline_string' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:74)
'mtn', '-d', '/home/dan/monotone/org.NetBSD.src.mtn', '-b', 
'org.NetBSD.src', 'cvs_import', 'src'
-----   end 'cmdline_string' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:74)
----- begin 'string(lc_all)' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:79)
C
-----   end 'string(lc_all)' (in virtual void 
sanity::initialize(int, char**, const char*), at sanity.cc:79)
----- begin 'new_id' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1705)
bcb416c64a60e01ccb8d1758a6759b67e848fe43
-----   end 'new_id' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1705)
----- begin 'rev' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1706)
format_version "1"

new_manifest [31a215e4847c525b79c7af160e625bfdae7840bd]

old_revision [2d230b6ba08c8c38190053b53a90cc626386b290]
-----   end 'rev' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1706)
----- begin 'd.inner()' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1714)
format_version "1"

new_manifest [31a215e4847c525b79c7af160e625bfdae7840bd]

old_revision [2d230b6ba08c8c38190053b53a90cc626386b290]
-----   end 'd.inner()' (in void database::put_revision(const 
revision_id&, const revision_t&), at database.cc:1714)
----- begin '*ros_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1761)
root dir is NULL
-----   end '*ros_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1761)
----- begin '*mm_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1762)

-----   end '*mm_writeable' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1762)
----- begin 'roster_manifest_id' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1764)

-----   end 'roster_manifest_id' (in void 
database::put_roster_for_revision(const revision_id&, const 
revision_t&), at database.cc:1764)
----- begin 'rev' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1817)
format_version "1"

new_manifest [31a215e4847c525b79c7af160e625bfdae7840bd]

old_revision [2d230b6ba08c8c38190053b53a90cc626386b290]
-----   end 'rev' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1817)
----- begin 'new_rid' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1818)
bcb416c64a60e01ccb8d1758a6759b67e848fe43
-----   end 'new_rid' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1818)
----- begin 'new_roster' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1819)
root dir is NULL
-----   end 'new_roster' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1819)
----- begin 'new_markings' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1820)

-----   end 'new_markings' (in void make_roster_for_revision(const 
revision_t&, const revision_id&, roster_t&, 
marking_map&, app_state&), at roster.cc:1820)



monotone version:
-----------------
0.30


Comment 1 by Unknown User, Sep 19, 2006

also reproducible with mainline head 7b435ce7 on linux.

netsync test is still running

Comment 2 by Unknown User, Sep 20, 2006

Netsync test is *still* running.  I suppose its good that it hasn't 
crashed yet, but it's not going to be much of a workaround if it's 
this slow (and for all I know the problem is still there waiting to 
bite, it's just that netsync processes revs in a different order to 
the other things which fail quickly).

After 15.5 hours of pegging the pull-side cpu:

mtn: bytes in | bytes out |       revs in | revs out
mtn:  156.2 M |       152 |  30294/182256 |      0/0

Created: 17 years 7 months ago by Unknown User

Updated: 13 years 11 months ago

Status: Accepted

Labels:
Priority:High
Type:Crash
Component:Other

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status