[Gluster-devel] NetBSD regressions, memory corruption

Venky Shankar yknev.shankar at gmail.com
Thu Mar 26 12:34:52 UTC 2015


On Wed, Mar 25, 2015 at 10:39 PM, Emmanuel Dreyfus <manu at netbsd.org> wrote:
> On Wed, Mar 25, 2015 at 10:32:08PM +0530, Venky Shankar wrote:
>> Could I run some tests on nbslave70
>
> Sure, I stopped doing tests since I assumed you were alredy doing some.
>
>> (I plan to disable some
>> translators). Just running AFR test cases should trigger the segfault,
>> correct?
>
> Yes, if you are lucky you can pass one or two tests, but it crashes
> quite reliably.

So, I think I've figured out the code part that trips everything off.
Changelog translator
starts it's own thread that calls event_dispatch
(this->ctx->event_pool). The event-pool
is actually a singleton hanging off the server translator stack.
Having another invoker
makes it misbehave, though I haven't actually figured out the inner
detail as to why.

I've run AFR test cases (continuously) with the following diff and
there's no segfault
till now.

diff --git a/xlators/features/changelog/src/changelog.c
b/xlators/features/changelog/src/changelog.c
index bb9c51a..f72f2c6 100644
--- a/xlators/features/changelog/src/changelog.c
+++ b/xlators/features/changelog/src/changelog.c
@@ -2504,12 +2504,12 @@ changelog_init_rpc (xlator_t *this,
changelog_priv_t *priv)
         /* initialize event selection */
         changelog_init_event_selection (this, selection);

-        ret = pthread_create (&priv->poller, NULL, changelog_rpc_poller, this);
+        /* ret = pthread_create (&priv->poller, NULL,
changelog_rpc_poller, this);
         if (ret != 0) {
                 gf_log (this->name, GF_LOG_ERROR,
                         "failed to spawn poller thread");
                 goto error_return;
-        }
+        } */

         priv->rbuf = rbuf_init (NR_ROTT_BUFFS);
         if (!priv->rbuf)

I'll continue to explore for an explanation for this. For now, coffee..

>
> I already tries to disable some translators: recently introduced upcall
> for instance, and of course changelog, which is the componenent that was
> modified when things started to break. The problem is that absence
> of the translatoor seems to break the tests because of the lack of
> functionnality.
>
> --
> Emmanuel Dreyfus
> manu at netbsd.org


More information about the Gluster-devel mailing list