On Wednesday 23 September 2009 02:47:29 jayjwa wrote: > The gnunet daemon always dies with the following assertion errors: > > Sep 22 20:23:09 FATAL: Internal error: assertion failed at mysql.c:427. > zsh: abort gnunetd -u daemon -d > > The gnunetd logfiles fill with these messages, but no other info.
Hmm. That should happen if the DB contains an entry that is corrupted in a particular way (and the code fails to test for it "nicely"). The following patch (also now in SVN HEAD) should fix this: sh-4.0$ svn diff mysql.c Index: mysql.c =================================================================== --- mysql.c (revision 9006) +++ mysql.c (working copy) @@ -418,6 +418,11 @@ contentSize = *(unsigned int *) result[0].buffer; if (contentSize < sizeof (GNUNET_DatastoreValue)) return NULL; /* error */ + if (contentSize > GNUNET_MAX_BUFFER_SIZE) + { + GNUNET_GE_BREAK (NULL, 0); /* far too big */ + return NULL; + } contentSize -= sizeof (GNUNET_DatastoreValue); type = *(unsigned int *) result[1].buffer; prio = *(unsigned int *) result[2].buffer; Alternatively you could drop the GNUnet database and recreate (but that's obviously not a good solution and would not prevent this from happening again). With the above patch, you'll still get a warning printed whenever this corrupt DB entry is hit (but no more crashes). > Running the test suite also ends similarly: > > Sep 22 20:20:57 `lt_dlopenext' failed for library > `libgnunetmodule_transport' with error: file not found > Sep 22 20:20:57 Internal error: assertion failed at handler.c:840. > /bin/sh: line 4: 13511 Aborted ${dir}$tst > FAIL: identitytest > =================================== > 1 of 1 tests failed > Please report to bug-gnunet@gnu.org > =================================== > > Which is odd because that file does exist at > /usr/lib/GNUnet/libgnunetmodule_transport.so That's a completely different error. You need to set "GNUNET_PREFIX=/usr" before running the testsuite and then this crash should disappear. Without this environment variable, the code does not look in "/usr" and fails to find the plugin. > Since then, I've updated to the most recent versions of MySQL and > libmicrohttp and recompiled GNUnet. The problems still presists. The > database server appears fine - I can login as the GNUnet user, work with > the gnunet database, etc. > > As a side note, I tried to sign up for bug tracking to better follow this > issue, but there appears to be errors there too. I enter the confirmation > URL, click 'update account' after supplying the requested info, and I only > get the follow: > > > This account is protected. You are not allowed to access this until the > account protection is lifted. > > Please use the "Back" button in your web browser to return to the previous > page. There you can correct whatever problems were identified in this error > or select another action. You can also click an option from the menu bar to > go directly to a new section. Strange, I can see your account but it is not marked as "protected". I've clicked the button for resetting your password. If that does not help, please contact me off-list and maybe we can figure it out. > Since I have no other way to send this, I'm using bug-gnu...@gnu.org. No problem, thanks for your report! Let me know if the above patch does not fix the problem. Best, Christian > Versions: > > GNUnet-0.8.0c > libmicrohttpd-0.4.2 (also tried with previous version) > mysql-5.1.39 (also tried with mysql-5.1.37) > libtool-2.2.6 > gcc-4.4.1 > glibc-2.10.1 > linux-2.6.30.5 > > Any help would be greatly appreciated. > > > > _______________________________________________ > Bug-GNUnet mailing list > Bug-GNUnet@gnu.org > http://lists.gnu.org/mailman/listinfo/bug-gnunet > -- http://grothoff.org/christian/ _______________________________________________ Bug-GNUnet mailing list Bug-GNUnet@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnunet