[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