From: Tim Sirianni (tim_at_scalemp.com)
Date: Thu Jun 30 2005 - 18:20:44 CDT
Brian and Dave,
Thanks for your replies.
I understand what you're saying, but I fear it applies to 64-address-bit
systems with 32-bit integers (e.g., Itanium). Since I'm running on an x86
system where sizeof(void *) == sizeof(int), I don't think that missing
prototypes could be the cause of this problem. Plus, I see the SIGSEGVs
only occasionally - maybe one run in 3 fails.
I've used both icc and gcc and see the problem with either compiler.
Maybe I've misunderstood what you were trying to tell me, please correct me
if so.
Thanks,
Tim
-----Original Message-----
From: David Kunzman <kunzman2_at_uiuc.edu>
To: Brian Bennion <brian_at_youkai.llnl.gov>
CC: tim_at_scalex86.org <tim_at_scalex86.org>; namd-l_at_ks.uiuc.edu
<namd-l_at_ks.uiuc.edu>
Sent: Tue Jun 28 13:29:01 2005
Subject: Re: segfaults in mm_malloc
There does not seem to be a prototype for this function (and a few
others). As a result, the compiler is assuming the return type of the
function is an "int". When the compiler (icc in the case we were
looking at) does the cast, it tries to convert the "int" that was
returned (which is really a 64-bit pointer) into a "char*". Since the
compiler "thinks" the returned value is only 32-bits, it is sign-extends
the 32-bit value to fit the 64-bit register which wipes out the upper
32-bits of the pointer making it invalid. A fix should be checked in
soon.
Dave Kunzman
Brian Bennion wrote:
>Hi Tim,
>I saw your posting on the namd wiki and want you to know that I to have
>seen this problem or one very similar in mm_mallac. David Kunzman
>(charm++ developer) worked on it for a couple of days last week.
>
>I do not know what the final results were, other than the compiler
makes
>some default assumptions about casting a void * to a char *. It
instead
>casts it to an int and wipes out half of the memory address. So what
is
>actually returned is entirely bogus.
>
>What compiler are you using?
>
>Brian
>
>
> ************************************************
> Brian Bennion, Ph.D.
> Bioscience Directorate
> Lawrence Livermore National Laboratory
> P.O. Box 808, L-448 bennion1_at_llnl.gov
> 7000 East Avenue phone: (925) 422-5722
> Livermore, CA 94550 fax: (925) 424-6605
>************************************************
This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:39:39 CST