Re: databases/mongodb fails to start, assertion failure in unit test

2013-01-28 Thread Wesley Shields
On Sat, Jan 26, 2013 at 07:06:21AM -0800, Waitman Gobble wrote:
 Waitman Gobble uzi...@da3m0n8t3r.com wrote ..
  
  Hi,
  
  I've installed databases/mongodb and get an error when starting.
  
  # /usr/local/etc/rc.d/mongod start
  Starting mongod.
  forked process: 59576
  all output going to: /var/db/mongodb/mongod.log
  /usr/local/etc/rc.d/mongod: WARNING: failed to start mongod
  
  # cat /var/db/mongodb/mongod.log
  
  Fri Jan 25 00:30:57   Assertion failure l  bigl src/mongo/db/btree.cpp 1973
  0x5a503d 0x5eb41d 0x74dce9 0x547638 0x545ed9 0x542bc1 
   0x5a503d _ZN5mongo12verifyFailedEPKcS1_j+285 at /usr/local/bin/mongod
   0x5eb41d _ZN5mongo10BTUnitTest3runEv+333 at /usr/local/bin/mongod
   0x74dce9 _ZN5mongo11StartupTest8runTestsEv+57 at /usr/local/bin/mongod
   0x547638 main+5992 at /usr/local/bin/mongod
   0x545ed9 main+9 at /usr/local/bin/mongod
   0x542bc1 _start+145 at /usr/local/bin/mongod
  Fri Jan 25 00:30:57 Got signal: 6 (Abort trap: 6).
  
  
  
  # portversion -v mongodb
  mongodb-2.2.0_1 =  up-to-date with port
  
  # uname -a
  FreeBSD kamira.waitman.net 9.1-STABLE FreeBSD 9.1-STABLE #0 r245772M: Tue 
  Jan 22
  06:09:00 PST 2013 r...@kamira.waitman.net:/usr/obj/usr/src/sys/BURPLEX  
  amd64
  
  
  I added a couple lines to print the values before the failure.
  
  
  src/mongo/db/btree.h
  
  ..
  
  struct BTUnitTest : public StartupTest {
  void run() {
  DiskLoc big(0xf12312, 0x70001234);
  DiskLoc56Bit bigl;
  {
  bigl = big;
  verify( big == bigl );
  DiskLoc e = bigl;
  verify( big == e );
  }
  {
  DiskLoc d;
  verify( d.isNull() );
  DiskLoc56Bit l;
  l = d;
  verify( l.isNull() );
  d = l;
  verify( d.isNull() );
  
  printf(bigl %s\n,bigl.toString().c_str());
  printf(l %s\n,l.toString().c_str());
  
  verify( l  bigl );
  }
  }
  } btunittest;
  ..
  
  
  output:
 
  bigl f12312:70001234
  l null
  Thu Jan 24 23:18:17   Assertion failure l  bigl src/mongo/db/btree.cpp 1978
 
  
  looking at
  src/mongo/db/diskloc.h
 
  bool isNull() const { return _a == -1; }
  ..   
  int compare(const DiskLoc b) const {
  int x = _a - b._a;
  if ( x )
  return x;
  return ofs - b.ofs;
  }
  bool operator(const DiskLoc b) const {
  return compare(b)  0;
  }
  ..
  void Null() {
  _a = -1;
  ofs = 0; /* note NullOfs is different. todo clean up.  see refs 
  to
  NullOfs in code - use is valid but outside DiskLoc context so confusing 
  as-is.
  */
  }
  
  
 
  it seems that this should be working!
  
  test model:
  
  #include stdio.h
  
  int
  compare (int a, int b)
  {
  int x = a - b;
  if ( x )
  return x;
  return 555;
  }
  
  bool
  ncompare (int a, int b)
  {
  return compare(a,b)  0;
  }
  
  int
  main (void)
  {
  int a, b;
  a = -1;
  b = 0xf12312;
  int c = a - b;
  printf(%d\n,c);
  c = compare(a,b);
  printf(%d\n,c);
  bool d = ncompare(a,b);
  printf(%d\n,d);
  bool e = ncompare(b,a);
  printf(%d\n,e);
  return 0;
  }
  
  # clang++ -o test test.cpp
  # ./test
  -15803155
  -15803155
  1
  0
  
  
  I'm missing something...
   
  Suggestions, tips, hints much appreciated. 
  
  Thanks,
  
  -- 
  Waitman Gobble
  San Jose California USA
 
 Hi,
 
 I've tinkered around with this problem. Commenting out the 'verify( l
  bigl );' line in src/mongo/db/btree.h solves the assertion failure
 problem, and mongodb starts and runs. However, after reviewing the
 code it seems this 'start' unit test is only actually testing if the
 thing can 'subtract integers.' I'm very puzzled as to why it is
 failing, it's bombing out when it does 'verify ((-1 - 0xf12312)0)'.
 which seems trivial.
 
 The code that runs the unit test/StartupTest is simple, but i haven't
 yet found the 'verify' macro, at least i believe it's a macro. 
 
 Anyhow, commenting out the test line gets mongodb running, but I'm
 wondering what other problems there could be. (?) 
 
 I found that compiling with base gcc avoids the startup problem, so
 this indeed seems to be an issue related to building with clang. clang
 builds mongodb without error, however running the mongodb compiled
 with clang fails during 'startuptest'. 
 
 IMHO It would be good to track down the problem, at least understand
 the cause, but at this moment it seems like compiling mongodb with gcc
 is the way to go.
 
 I've updated the port to use the latest release/ 2.2.2 version of
 mongodb, I'll submit a PR in a bit, (it does not appear to have 

Re: databases/mongodb fails to start, assertion failure in unit test

2013-01-28 Thread Waitman Gobble
Wesley Shields w...@freebsd.org wrote ..
 On Sat, Jan 26, 2013 at 07:06:21AM -0800, Waitman Gobble wrote:
  Waitman Gobble uzi...@da3m0n8t3r.com wrote ..
   
   Hi,
   
   I've installed databases/mongodb and get an error when starting.
   
   # /usr/local/etc/rc.d/mongod start
   Starting mongod.
   forked process: 59576
   all output going to: /var/db/mongodb/mongod.log
   /usr/local/etc/rc.d/mongod: WARNING: failed to start mongod
   
   # cat /var/db/mongodb/mongod.log
   
   Fri Jan 25 00:30:57   Assertion failure l  bigl src/mongo/db/btree.cpp 
   1973
   0x5a503d 0x5eb41d 0x74dce9 0x547638 0x545ed9 0x542bc1 
0x5a503d _ZN5mongo12verifyFailedEPKcS1_j+285 at /usr/local/bin/mongod
0x5eb41d _ZN5mongo10BTUnitTest3runEv+333 at /usr/local/bin/mongod
0x74dce9 _ZN5mongo11StartupTest8runTestsEv+57 at /usr/local/bin/mongod
0x547638 main+5992 at /usr/local/bin/mongod
0x545ed9 main+9 at /usr/local/bin/mongod
0x542bc1 _start+145 at /usr/local/bin/mongod
   Fri Jan 25 00:30:57 Got signal: 6 (Abort trap: 6).
   
   
   
   # portversion -v mongodb
   mongodb-2.2.0_1 =  up-to-date with port
   
   # uname -a
   FreeBSD kamira.waitman.net 9.1-STABLE FreeBSD 9.1-STABLE #0 r245772M: Tue 
   Jan
 22
   06:09:00 PST 2013 r...@kamira.waitman.net:/usr/obj/usr/src/sys/BURPLEX
 amd64
   
   
   I added a couple lines to print the values before the failure.
   
   
   src/mongo/db/btree.h
   
   ..
   
   struct BTUnitTest : public StartupTest {
   void run() {
   DiskLoc big(0xf12312, 0x70001234);
   DiskLoc56Bit bigl;
   {
   bigl = big;
   verify( big == bigl );
   DiskLoc e = bigl;
   verify( big == e );
   }
   {
   DiskLoc d;
   verify( d.isNull() );
   DiskLoc56Bit l;
   l = d;
   verify( l.isNull() );
   d = l;
   verify( d.isNull() );
   
   printf(bigl %s\n,bigl.toString().c_str());
   printf(l %s\n,l.toString().c_str());
   
   verify( l  bigl );
   }
   }
   } btunittest;
   ..
   
   
   output:
  
   bigl f12312:70001234
   l null
   Thu Jan 24 23:18:17   Assertion failure l  bigl src/mongo/db/btree.cpp 
   1978
  
   
   looking at
   src/mongo/db/diskloc.h
  
   bool isNull() const { return _a == -1; }
   ..   
   int compare(const DiskLoc b) const {
   int x = _a - b._a;
   if ( x )
   return x;
   return ofs - b.ofs;
   }
   bool operator(const DiskLoc b) const {
   return compare(b)  0;
   }
   ..
   void Null() {
   _a = -1;
   ofs = 0; /* note NullOfs is different. todo clean up.  see 
   refs
 to
   NullOfs in code - use is valid but outside DiskLoc context so confusing 
   as-is.
   */
   }
   
   
  
   it seems that this should be working!
   
   test model:
   
   #include stdio.h
   
   int
   compare (int a, int b)
   {
   int x = a - b;
   if ( x )
   return x;
   return 555;
   }
   
   bool
   ncompare (int a, int b)
   {
   return compare(a,b)  0;
   }
   
   int
   main (void)
   {
   int a, b;
   a = -1;
   b = 0xf12312;
   int c = a - b;
   printf(%d\n,c);
   c = compare(a,b);
   printf(%d\n,c);
   bool d = ncompare(a,b);
   printf(%d\n,d);
   bool e = ncompare(b,a);
   printf(%d\n,e);
   return 0;
   }
   
   # clang++ -o test test.cpp
   # ./test
   -15803155
   -15803155
   1
   0
   
   
   I'm missing something...

   Suggestions, tips, hints much appreciated. 
   
   Thanks,
   
   -- 
   Waitman Gobble
   San Jose California USA
  
  Hi,
  
  I've tinkered around with this problem. Commenting out the 'verify( l
   bigl );' line in src/mongo/db/btree.h solves the assertion failure
  problem, and mongodb starts and runs. However, after reviewing the
  code it seems this 'start' unit test is only actually testing if the
  thing can 'subtract integers.' I'm very puzzled as to why it is
  failing, it's bombing out when it does 'verify ((-1 - 0xf12312)0)'.
  which seems trivial.
  
  The code that runs the unit test/StartupTest is simple, but i haven't
  yet found the 'verify' macro, at least i believe it's a macro. 
  
  Anyhow, commenting out the test line gets mongodb running, but I'm
  wondering what other problems there could be. (?) 
  
  I found that compiling with base gcc avoids the startup problem, so
  this indeed seems to be an issue related to building with clang. clang
  builds mongodb without error, however running the mongodb compiled
  with clang fails during 'startuptest'. 
  
  IMHO It would be good to track down the problem, at least 

Re: databases/mongodb fails to start, assertion failure in unit test

2013-01-26 Thread Waitman Gobble
Waitman Gobble uzi...@da3m0n8t3r.com wrote ..
 
 Hi,
 
 I've installed databases/mongodb and get an error when starting.
 
 # /usr/local/etc/rc.d/mongod start
 Starting mongod.
 forked process: 59576
 all output going to: /var/db/mongodb/mongod.log
 /usr/local/etc/rc.d/mongod: WARNING: failed to start mongod
 
 # cat /var/db/mongodb/mongod.log
 
 Fri Jan 25 00:30:57   Assertion failure l  bigl src/mongo/db/btree.cpp 1973
 0x5a503d 0x5eb41d 0x74dce9 0x547638 0x545ed9 0x542bc1 
  0x5a503d _ZN5mongo12verifyFailedEPKcS1_j+285 at /usr/local/bin/mongod
  0x5eb41d _ZN5mongo10BTUnitTest3runEv+333 at /usr/local/bin/mongod
  0x74dce9 _ZN5mongo11StartupTest8runTestsEv+57 at /usr/local/bin/mongod
  0x547638 main+5992 at /usr/local/bin/mongod
  0x545ed9 main+9 at /usr/local/bin/mongod
  0x542bc1 _start+145 at /usr/local/bin/mongod
 Fri Jan 25 00:30:57 Got signal: 6 (Abort trap: 6).
 
 
 
 # portversion -v mongodb
 mongodb-2.2.0_1 =  up-to-date with port
 
 # uname -a
 FreeBSD kamira.waitman.net 9.1-STABLE FreeBSD 9.1-STABLE #0 r245772M: Tue Jan 
 22
 06:09:00 PST 2013 r...@kamira.waitman.net:/usr/obj/usr/src/sys/BURPLEX  
 amd64
 
 
 I added a couple lines to print the values before the failure.
 
 
 src/mongo/db/btree.h
 
 ..
 
 struct BTUnitTest : public StartupTest {
 void run() {
 DiskLoc big(0xf12312, 0x70001234);
 DiskLoc56Bit bigl;
 {
 bigl = big;
 verify( big == bigl );
 DiskLoc e = bigl;
 verify( big == e );
 }
 {
 DiskLoc d;
 verify( d.isNull() );
 DiskLoc56Bit l;
 l = d;
 verify( l.isNull() );
 d = l;
 verify( d.isNull() );
 
 printf(bigl %s\n,bigl.toString().c_str());
 printf(l %s\n,l.toString().c_str());
 
 verify( l  bigl );
 }
 }
 } btunittest;
 ..
 
 
 output:

 bigl f12312:70001234
 l null
 Thu Jan 24 23:18:17   Assertion failure l  bigl src/mongo/db/btree.cpp 1978

 
 looking at
 src/mongo/db/diskloc.h

 bool isNull() const { return _a == -1; }
 ..   
 int compare(const DiskLoc b) const {
 int x = _a - b._a;
 if ( x )
 return x;
 return ofs - b.ofs;
 }
 bool operator(const DiskLoc b) const {
 return compare(b)  0;
 }
 ..
 void Null() {
 _a = -1;
 ofs = 0; /* note NullOfs is different. todo clean up.  see refs to
 NullOfs in code - use is valid but outside DiskLoc context so confusing as-is.
 */
 }
 
 

 it seems that this should be working!
 
 test model:
 
 #include stdio.h
 
 int
 compare (int a, int b)
 {
 int x = a - b;
 if ( x )
 return x;
 return 555;
 }
 
 bool
 ncompare (int a, int b)
 {
 return compare(a,b)  0;
 }
 
 int
 main (void)
 {
 int a, b;
 a = -1;
 b = 0xf12312;
 int c = a - b;
 printf(%d\n,c);
 c = compare(a,b);
 printf(%d\n,c);
 bool d = ncompare(a,b);
 printf(%d\n,d);
 bool e = ncompare(b,a);
 printf(%d\n,e);
 return 0;
 }
 
 # clang++ -o test test.cpp
 # ./test
 -15803155
 -15803155
 1
 0
 
 
 I'm missing something...
  
 Suggestions, tips, hints much appreciated. 
 
 Thanks,
 
 -- 
 Waitman Gobble
 San Jose California USA

Hi,

I've tinkered around with this problem. Commenting out the 'verify( l  bigl 
);' line in src/mongo/db/btree.h solves the assertion failure problem, and 
mongodb starts and runs. However, after reviewing the code it seems this 
'start' unit test is only actually testing if the thing can 'subtract 
integers.' I'm very puzzled as to why it is failing, it's bombing out when it 
does 'verify ((-1 - 0xf12312)0)'. which seems trivial.

The code that runs the unit test/StartupTest is simple, but i haven't yet found 
the 'verify' macro, at least i believe it's a macro. 

Anyhow, commenting out the test line gets mongodb running, but I'm wondering 
what other problems there could be. (?) 

I found that compiling with base gcc avoids the startup problem, so this indeed 
seems to be an issue related to building with clang. clang builds mongodb 
without error, however running the mongodb compiled with clang fails during 
'startuptest'. 

IMHO It would be good to track down the problem, at least understand the cause, 
but at this moment it seems like compiling mongodb with gcc is the way to go.

I've updated the port to use the latest release/ 2.2.2 version of mongodb, I'll 
submit a PR in a bit, (it does not appear to have been submitted already) maybe 
somebody wants to use it. (The startup assertion failure affects the existing 
port '2.2.0' as well as 2.2.2)

-- 
Waitman Gobble
San Jose California USA
___

databases/mongodb fails to start, assertion failure in unit test

2013-01-25 Thread Waitman Gobble

Hi,

I've installed databases/mongodb and get an error when starting.

# /usr/local/etc/rc.d/mongod start
Starting mongod.
forked process: 59576
all output going to: /var/db/mongodb/mongod.log
/usr/local/etc/rc.d/mongod: WARNING: failed to start mongod

# cat /var/db/mongodb/mongod.log

Fri Jan 25 00:30:57   Assertion failure l  bigl src/mongo/db/btree.cpp 1973
0x5a503d 0x5eb41d 0x74dce9 0x547638 0x545ed9 0x542bc1 
 0x5a503d _ZN5mongo12verifyFailedEPKcS1_j+285 at /usr/local/bin/mongod
 0x5eb41d _ZN5mongo10BTUnitTest3runEv+333 at /usr/local/bin/mongod
 0x74dce9 _ZN5mongo11StartupTest8runTestsEv+57 at /usr/local/bin/mongod
 0x547638 main+5992 at /usr/local/bin/mongod
 0x545ed9 main+9 at /usr/local/bin/mongod
 0x542bc1 _start+145 at /usr/local/bin/mongod
Fri Jan 25 00:30:57 Got signal: 6 (Abort trap: 6).



# portversion -v mongodb
mongodb-2.2.0_1 =  up-to-date with port

# uname -a
FreeBSD kamira.waitman.net 9.1-STABLE FreeBSD 9.1-STABLE #0 r245772M: Tue Jan 
22 06:09:00 PST 2013 r...@kamira.waitman.net:/usr/obj/usr/src/sys/BURPLEX  
amd64


I added a couple lines to print the values before the failure.


src/mongo/db/btree.h

..

struct BTUnitTest : public StartupTest {
void run() {
DiskLoc big(0xf12312, 0x70001234);
DiskLoc56Bit bigl;
{
bigl = big;
verify( big == bigl );
DiskLoc e = bigl;
verify( big == e );
}
{
DiskLoc d;
verify( d.isNull() );
DiskLoc56Bit l;
l = d;
verify( l.isNull() );
d = l;
verify( d.isNull() );

printf(bigl %s\n,bigl.toString().c_str());
printf(l %s\n,l.toString().c_str());

verify( l  bigl );
}
}
} btunittest;
..


output:
   
bigl f12312:70001234
l null
Thu Jan 24 23:18:17   Assertion failure l  bigl src/mongo/db/btree.cpp 1978
   

looking at
src/mongo/db/diskloc.h
   
bool isNull() const { return _a == -1; }
..   
int compare(const DiskLoc b) const {
int x = _a - b._a;
if ( x )
return x;
return ofs - b.ofs;
}
bool operator(const DiskLoc b) const {
return compare(b)  0;
}
..
void Null() {
_a = -1;
ofs = 0; /* note NullOfs is different. todo clean up.  see refs to 
NullOfs in code - use is valid but outside DiskLoc context so confusing as-is. 
*/
}


   
it seems that this should be working!

test model:

#include stdio.h

int
compare (int a, int b)
{
int x = a - b;
if ( x )
return x;
return 555;
}

bool
ncompare (int a, int b)
{
return compare(a,b)  0;
}

int
main (void)
{
int a, b;
a = -1;
b = 0xf12312;
int c = a - b;
printf(%d\n,c);
c = compare(a,b);
printf(%d\n,c);
bool d = ncompare(a,b);
printf(%d\n,d);
bool e = ncompare(b,a);
printf(%d\n,e);
return 0;
}

# clang++ -o test test.cpp
# ./test
-15803155
-15803155
1
0


I'm missing something...
 
Suggestions, tips, hints much appreciated. 

Thanks,

-- 
Waitman Gobble
San Jose California USA
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to freebsd-ports-unsubscr...@freebsd.org