Thanks Ian. Adding to that allocation to cover the element size did the 
trick. Out of curiosity, the momery allocated by mallocgc is still tracked 
by the gc, right?
 A brief look at the code seems to indicate that this is the case, but I 
don't know how the gc works.

On Monday, June 8, 2020 at 9:41:21 PM UTC+3, Ian Lance Taylor wrote:
>
> On Mon, Jun 8, 2020 at 10:44 AM Viktor Kojouharov <vkojo...@gmail.com 
> <javascript:>> wrote: 
> > 
> > The full code can be seen in this diff: 
> > 
> > 
> https://github.com/urandom/go/commit/d10ccdd907dac690bfcb31df1115ce1508775458 
> > 
> > The just of it is, I've added an extra field to a struct (the chan) of 
> type unsafe.Pointer. The value is then copied (allegedly) to a target 
> pointer in chanrecv using typedmemmove. The types of both pointers are the 
> same, as defined by the chan's elemtype 
>
> I only took a quick look, but it looks like you have added a pointer 
> field to hchan, and presumably the garbage collector needs to know 
> about that pointer.  If you look at makechan in runtime/chan.go, you 
> will see that a channel whose element type does not contain any 
> pointers is allocated in such a way that the garbage collector never 
> looks at it.  That will break with your new pointer, as the collector 
> can collect the value to which the new pointer points without changing 
> that pointer. 
>
> Ian 
>
>
>
> > On Monday, June 8, 2020 at 3:12:18 AM UTC+3, keith....@gmail.com wrote: 
> >> 
> >> Showing us some code would really help. It's hard to understand what 
> you are doing from this brief description. Also, where does the SIGBUS 
> occur? What pc, and what address? 
> >> 
> >> What types are you passing as the first argument to typedmemmove? Where 
> did you get them from? 
> >> 
> >> This is a fine question for golang-dev, but don't expect a whole lot of 
> help - reaching into the runtime to call typedmemmove is very unsupported. 
> >> 
> >> On Sunday, June 7, 2020 at 10:02:21 AM UTC-7, Michael Jones wrote: 
> >>> 
> >>> Thank you. I now officially know that I don’t understand. Sorry. 
> >>> 
> >>> On Sun, Jun 7, 2020 at 7:54 AM Viktor Kojouharov <vkojo...@gmail.com> 
> wrote: 
> >>>> 
> >>>> The pointer is being copied via typedmemmove, which itself calls 
> memmove, which, according to its documentation, copies bytes from the 
> source to the destination. Not sure why that would be impossible, 
> considering it does work for some code (the source pointer preserves its 
> data) 
> >>>> 
> >>>> Not sure what you mean by "copied via unsafe". Also, the source 
> pointer never goes out of scope. It's part of a struct that is passed to 
> the function that calls typedmemmove, and its lifetime is more or less 
> static. So while the destination pointers go out of scope, the source one 
> never does. 
> >>>> 
> >>>> 
> >>>> On Sunday, June 7, 2020 at 4:45:40 PM UTC+3, Michael Jones wrote: 
> >>>>> 
> >>>>> Do you mean that you have a problem with the value of the pointer? 
> That is "copying the pointer." This seems impossible. 
> >>>>> 
> >>>>> Attempting to access through a pointer copied via unsafe is 
> (generally) inviting doom, and seems highly possible. The instant the last 
> pointer to that data goes out of scope the address range occupied by the 
> formerly pointed to items is formally inaccessible. Using unsafe to keep a 
> shadow copy of the address and then poking around is quite likely to fail, 
> and even when it does not, it is quite likely to be meaningless. (random 
> data from some other use). 
> >>>>> 
> >>>>> If I misunderstood, please forgive me. 
> >>>>> 
> >>>>> On Sun, Jun 7, 2020 at 6:15 AM Viktor Kojouharov <vkojo...@gmail.com> 
> wrote: 
> >>>>>> 
> >>>>>> p.s. should such questions be posted in golang-dev, since it deals 
> with runtime internals? 
> >>>>>> 
> >>>>>> -- 
> >>>>>> You received this message because you are subscribed to the Google 
> Groups "golang-nuts" group. 
> >>>>>> To unsubscribe from this group and stop receiving emails from it, 
> send an email to golan...@googlegroups.com. 
> >>>>>> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/71d7fb5c-3ef5-4611-b9ce-299f7b90945eo%40googlegroups.com.
>  
>
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> -- 
> >>>>> Michael T. Jones 
> >>>>> michae...@gmail.com 
> >>>> 
> >>>> -- 
> >>>> You received this message because you are subscribed to the Google 
> Groups "golang-nuts" group. 
> >>>> To unsubscribe from this group and stop receiving emails from it, 
> send an email to golan...@googlegroups.com. 
> >>>> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/fa18bf7e-8965-4917-9d81-00a8f43289c3o%40googlegroups.com.
>  
>
> >>> 
> >>> -- 
> >>> Michael T. Jones 
> >>> michae...@gmail.com 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "golang-nuts" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to golan...@googlegroups.com <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/aa037e65-0e2a-47d6-b35c-8e80fc3a8000o%40googlegroups.com.
>  
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/01e4daa4-568d-4d56-9691-66272e908a3do%40googlegroups.com.

Reply via email to