On Mar 19, 2013, at 4:29 PM, Brian Geffon <[email protected]> wrote:
> Ok, I'll get both of these committed. this breaks valgrind :( > > Brian > > On Tue, Mar 19, 2013 at 4:18 PM, John Plevyak <[email protected]> wrote: > >> Definitely should do that as well. >> >> john >> >> On Tue, Mar 19, 2013 at 4:04 PM, Brian Geffon <[email protected]> >> wrote: >> >>> Thanks John! >>> >>> Someone else mentioned that we might need to force the head_p to be 16 >> byte >>> aligned, what are your thoughts? >>> >>> - } head_p; >>> + } __attribute__ ((aligned (16))) head_p; >>> >>> >>> Thanks. >>> Brian >>> >>> On Tue, Mar 19, 2013 at 3:47 PM, John Plevyak <[email protected]> wrote: >>> >>>> I believe the problem is with INK_QUEUE_LD which is not atomic: >>>> >>>> diff --git a/lib/ts/ink_queue.h b/lib/ts/ink_queue.h >>>> index 6ac9945..20fbf9a 100644 >>>> --- a/lib/ts/ink_queue.h >>>> +++ b/lib/ts/ink_queue.h >>>> @@ -72,7 +72,7 @@ extern "C" >>>> #endif >>>> >>>> #if TS_HAS_128BIT_CAS >>>> -#define INK_QUEUE_LD(dst,src) *((__int128_t*)&(dst)) = >>>> *((__int128_t*)&(src)) >>>> +#define INK_QUEUE_LD(dst,src) *(__int128_t*)&(dst) = >>>> __sync_fetch_and_add((__int128_t*)&(src), 0) >>>> #else >>>> #define INK_QUEUE_LD(dst,src) INK_QUEUE_LD64(dst,src) >>>> #endif >>>> >>>> This fixes the problem. >>>> >>>> On Mon, Mar 18, 2013 at 9:31 PM, Brian Geffon <[email protected]> >> wrote: >>>> >>>>> Hey, I'm looking into the failing freelist tests using the precise64 >>>>> vagrant box. If I can't figure it out tonight I'll just disable the >>> check >>>>> in configure.ac to get things stable again for the time being. If >>> anyone >>>>> else has some time to help out with this, I'd really appreciate it. >>>>> >>>>> Brian >>>>> >>>>> On Mon, Mar 18, 2013 at 9:49 AM, James Peach <[email protected]> >>> wrote: >>>>> >>>>>> Hi Brian, >>>>>> >>>>>> I finally fixed the autoconf tests for TS_HAS_128BIT_CAS. >>> Unfortunately >>>>>> test_freelist fails on all the platforms that I have access to. I'm >>>>>> assuming that on your platforms it succeeds, so maybe there's >>> something >>>>>> about the version of gcc you are using that makes it work. >>>>>> >>>>>> Since I don't really know which platforms this is working for, what >>> do >>>>> you >>>>>> think about reverting this? >>>>>> >>>>>> J >>>>> >>>> >>> >>
