[openib-general] RE: [PATCH] Opensm - fix segfault on exit - cont.

Hal Rosenstock halr at voltaire.com
Tue Dec 20 05:17:27 PST 2005


Hi Yael,

On Tue, 2005-12-20 at 02:11, Yael Kalka wrote:
> Hi Hal,
> The compiler version is gcc (GCC) 4.0.2
> As you see from the patch - something strange is going on with the
> compiler(probably).
> I have a pointer that its value is null, but it still enters the if
> statement, and
> doesn't handle it as zero.
> There are many more places where we have if statements on pointers
> similar to this
> case, and this compiler change can be very problematic.
> Do you/anyone else know about this change in the gcc version? Is this
> behavior 
> controlled by some flag?

I haven't seen this (but only used up to gcc 4.0.0) and don't know about
this change. Have you searched on the web for this ?

-- Hal

> Thanks,
> Yael
> 
> 
> -----Original Message-----
> From: Hal Rosenstock [mailto:halr at voltaire.com]
> Sent: Monday, December 19, 2005 1:42 PM
> To: Yael Kalka
> Cc: openib-general at openib.org; Eitan Zahavi
> Subject: Re: [PATCH] Opensm - fix segfault on exit - cont.
> 
> 
> Hi Yael,
> 
> On Mon, 2005-12-19 at 04:19, Yael Kalka wrote:
> > Hi Hal,
> > 
> > I've noticed that under certain operating systems,
> 
> Seems more likely like a compiler difference rather than OS difference.
> Can you mention on which distribution/compiler this made a difference ?
> 
> > when driver isn't 
> > loaded, the SM still exits with segfault.
> > The following patch fixes this.
> > 
> > Thanks,
> > Yael
> > 
> > Signed-off-by:  Yael Kalka <yael at mellanox.co.il>
> > 
> > Index: libvendor/osm_vendor_ibumad.c
> > ===================================================================
> > --- libvendor/osm_vendor_ibumad.c       (revision 4522)
> > +++ libvendor/osm_vendor_ibumad.c       (working copy)
> > @@ -552,7 +552,7 @@ osm_vendor_delete(
> >  
> >         /* umad receiver thread ? */
> >         p_ur = (*pp_vend)->receiver;
> > -       if (&p_ur->signal)
> > +       if (&p_ur->signal != NULL)
> 
> If this makes a difference, there are other uses of similar syntax which
> should be changed :-(
> 
> >                 cl_event_destroy( &p_ur->signal );
> >         cl_spinlock_destroy( &(*pp_vend)->cb_lock );
> >         cl_spinlock_destroy( &(*pp_vend)->match_tbl_lock );
> 
> -- Hal




More information about the general mailing list