[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-GNUnet] GNUnet-0.8.0c dies with assertion failures
From: |
Christian Grothoff |
Subject: |
Re: [bug-GNUnet] GNUnet-0.8.0c dies with assertion failures |
Date: |
Thu, 24 Sep 2009 15:50:53 +0200 |
User-agent: |
KMail/1.12.1 (Linux/2.6.28-grml64; KDE/4.3.1; x86_64; ; ) |
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 address@hidden
> ===================================
>
> 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 address@hidden
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
> address@hidden
> http://lists.gnu.org/mailman/listinfo/bug-gnunet
>
--
http://grothoff.org/christian/