subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Phippard <markp...@gmail.com>
Subject Re: Problems compiling 1.7.0 on redhat el4 64bit
Date Mon, 22 Aug 2011 16:47:40 GMT
Michael, did you ever get a chance trying the -fno-strict-aliasing flag
rather than removing all optimizations?



On Mon, Aug 22, 2011 at 12:43 PM, <michael_rytting@agilent.com> wrote:

> No luck, still crashing.
>
> -----Original Message-----
> From: Philip Martin [mailto:philip.martin@wandisco.com]
> Sent: Monday, August 22, 2011 10:23 AM
> To: RYTTING,MICHAEL (A-ColSprings,ex1)
> Cc: markphip@gmail.com; dev@subversion.apache.org;
> users@subversion.apache.org
> Subject: Re: Problems compiling 1.7.0 on redhat el4 64bit
>
> <michael_rytting@agilent.com> writes:
>
> > It is set to 1
> >>
> >> Looking at the rest of the stack trace I would say this is the first
> >> call to a utf8 conversion function that would have invoked
> >> get_xlate_handle_node and I suspect it is that function that is going
> >> wrong.  At a guess something to do with the use of atomic_swap, which
> >> makes it important to confirm the value of APR_HAS_THREADS.
>
> I wonder if it is connected to this APR bug:
>
> https://issues.apache.org/bugzilla/show_bug.cgi?id=50731
>
> In subversion/libsvn_subr/utf.c we declare
>
> static volatile void *xlat_ntou_static_handle = NULL; static volatile void
> *xlat_uton_static_handle = NULL;
>
> that is "pointers to volatile data", as required by APR, but we really want
> "volatile pointers to data".  Perhaps we should do something similar to
> svn_cache_config.c.  Would you try this patch built with optimisations
> enabled:
>
> Index: subversion/libsvn_subr/utf.c
> ===================================================================
> --- subversion/libsvn_subr/utf.c        (revision 1160136)
> +++ subversion/libsvn_subr/utf.c        (working copy)
> @@ -90,8 +90,8 @@
>  * using atomic xchange ops, i.e. without further thread synchronization.
>  * If the respective item is NULL, fallback to hash lookup.
>  */
> -static volatile void *xlat_ntou_static_handle = NULL; -static volatile
> void *xlat_uton_static_handle = NULL;
> +static void * volatile xlat_ntou_static_handle = NULL; static void *
> +volatile xlat_uton_static_handle = NULL;
>
>  /* Clean up the xlate handle cache. */
>  static apr_status_t
> @@ -182,11 +182,11 @@
>  * the caller.
>  */
>  static APR_INLINE void*
> -atomic_swap(volatile void **mem, void *new_value)
> +atomic_swap(void * volatile * mem, void *new_value)
>  {
>  #if APR_HAS_THREADS
>  #if APR_VERSION_AT_LEAST(1,3,0)
> -   return apr_atomic_xchgptr(mem, new_value);
> +   return apr_atomic_xchgptr((volatile void **)mem, new_value);
>  #else
>    /* old APRs don't support atomic swaps. Simply return the
>     * input to the caller for further proccessing. */
>
>
> --
> uberSVN: Apache Subversion Made Easy
> http://www.uberSVN.com
>



-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/

Mime
View raw message