On Wed, Jun 10, 2020 at 4:15 AM Viktor Kojouharov <vkojouha...@gmail.com>
wrote:

> 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.
>

Correct.


>
> 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>
>> 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.
>> > 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 a topic in the
> Google Groups "golang-nuts" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/golang-nuts/V2abC-HQvYk/unsubscribe.
> To unsubscribe from this group and all its topics, 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
> <https://groups.google.com/d/msgid/golang-nuts/01e4daa4-568d-4d56-9691-66272e908a3do%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CA%2BZMcOOcJ7%3DRSjx9er4ARnMbMYbGDxxL9Oz34%2BxA7EDpV5quuA%40mail.gmail.com.

Reply via email to