Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Ferris McCormick (fmccor_at_[hidden])
Date: 2005-09-27 10:59:04


On Mon, 2005-09-26 at 20:09 +0000, Ferris McCormick wrote:
> On Mon, 2005-09-26 at 14:59 +0000, Ferris McCormick wrote:
> > On Fri, 2005-09-16 at 11:35 -0500, Brian Barrett wrote:
> > > On Sep 16, 2005, at 8:44 AM, Ferris McCormick wrote:
> > >
> > > > ==========================================
> > > > fmccor_at_polylepis util [235]% ./opal_timer
> > > > --> frequency: 900000000
> > > > --> cycle count
> > > > Slept approximately 903151189 cycles, or 1003501 us
> > > > --> usecs
> > > > Slept approximately 18446744073289684648 us
> > > > ==========================================
> > >
> > > That last value means that I'm munging the upper 32 bits of the tick
> > > register (it's 64 bits long). So we're not quite there yet, but
> > > getting closer. I should be able to get to that today.
> > >
> > > The other problem is very odd. Since you're compiling in 32bit mode,
> > > I'd expect us to see it on our PowerPC machines, but I haven't run into
> > > that one yet. I'll try to compile without debugging and see what I can
> > > see.
> > >
> > >
> > > Brian

Here's where the SegFault comes from.
For whatever reason, when working with the verbose opal_output_stream,
eventually opal_paffinity_base_open sets opal_paffinity_base_output=-1
(at paffinity_base_open.c, 62) and calls mca_base_components_open with
that value as the output_id. In turn, if output_id!=0,
mca_base_components_open calls:
=====================================
 if (output_id != 0) {
    opal_output_set_verbosity(output_id, verbose_level);
  }
======================================

Now, opal_set_verbosity (in opal/util/output.c) unconditionally does
this:
    info[output_id].ldi_verbose_level = level;
(where, for verbose, this is info[-1].ldi_verbose_level=0;)
On my system, this wipes out verbose itself.

Elsewhere in output.c, such constructs are bracketed with
if(output_id >= 0) { ... } (or if(-1 == output_id) {...}), and I suspect
that is needed here, too.

Hope this helps,
Ferris

-- 
Ferris McCormick (P44646, MI) <fmccor_at_[hidden]>
Developer, Gentoo Linux (Sparc, Devrel)