Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-22 Thread jsonp via golang-nuts
I'm not making any function calls in the assembly, just writing to memory addresses that represent the elements / len of the slice. I've also tried using LockOSThread() to see if that made any difference, alas it does not. On Friday, March 22, 2019 at 4:59:30 AM UTC-7, Robert Engels wrote: > >

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-22 Thread jsonp via golang-nuts
The assembly should never write to a position / update the len beyond the backing array (specifically, the assembly is generated from code where the 'max stack depth' has been computed and validated, and the capacity of the slice is that size). On Friday, March 22, 2019 at 5:39:36 AM UTC-7,

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-22 Thread howardcshaw
On Friday, March 22, 2019 at 12:27:37 AM UTC-5, Tom wrote: > > The allocation is in go, and assembly never modifies the size of the > backing array. Assembly only ever modifies len, which is the len of the > slice and not the backing array. > > Can the assembly ever modify len to a size greater

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-22 Thread Robert Engels
Are you making any calls modifying the len that would allow GC to occur, or change stack size? You might need to pin the Go routine so that the operation you are performing is “atomic” with respect to those. This also sounds very scary if the Go runtime every had a compacting collector. > On

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-21 Thread Tom
The allocation is in go, and assembly never modifies the size of the backing array. Assembly only ever modifies len, which is the len of the slice and not the backing array. On Thursday, 21 March 2019 22:18:29 UTC-7, Tamás Gulácsi wrote: > > 2019. március 22., péntek 6:06:06 UTC+1 időpontban

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-21 Thread Tamás Gulácsi
2019. március 22., péntek 6:06:06 UTC+1 időpontban Tom a következőt írta: > > Still errors I'm afraid :/ > > On Thursday, 21 March 2019 21:54:59 UTC-7, Ian Lance Taylor wrote: >> >> On Thu, Mar 21, 2019 at 9:39 PM Tom wrote: >> > >> > I've been stuck on this for a few days so thought I would

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-21 Thread Tom
Still errors I'm afraid :/ On Thursday, 21 March 2019 21:54:59 UTC-7, Ian Lance Taylor wrote: > > On Thu, Mar 21, 2019 at 9:39 PM Tom > > wrote: > > > > I've been stuck on this for a few days so thought I would ask the brains > trust. > > > > TL;DR: When I have native amd64 instructions

Re: [go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-21 Thread Ian Lance Taylor
On Thu, Mar 21, 2019 at 9:39 PM Tom wrote: > > I've been stuck on this for a few days so thought I would ask the brains > trust. > > TL;DR: When I have native amd64 instructions mutating (updating the len + > values of a []uint64) a slice, I experience spurious & random memory > corruption

[go-nuts] Accessing *[]uint64 from assembly - strange memory corruption under heavy load - any ideas?

2019-03-21 Thread Tom
I've been stuck on this for a few days so thought I would ask the brains trust. *TL;DR: *When I have native amd64 instructions mutating (updating the len + values of a []uint64) a slice, I experience spurious & random memory corruption when under heavy load (# runnable goroutines > MAXPROCS,