Youzhong,
Nice! Great to hear that it worked, and thanks again for getting it down
to such a straightforward test case!
- Bryan
On Fri, Aug 1, 2014 at 11:12 AM, Youzhong Yang <[email protected]> wrote:
> I got my new smartos image and alos samba 4.1.10 built, it works, no more
> 'net ads join' crashes.
>
> Your help is absolutely appreciated.
>
> Thanks,
>
> -Youzhong
>
>
>
> On Fri, Aug 1, 2014 at 9:42 AM, Youzhong Yang <[email protected]> wrote:
>
>> Thanks very much for the quick fix.
>>
>> I'll build a new image and also samba, then report back after testing.
>>
>> -Youzhong
>>
>>
>> On Fri, Aug 1, 2014 at 4:56 AM, Bryan Cantrill <[email protected]>
>> wrote:
>>
>>>
>>> Perfect -- thank you! As it turns out, this was -- as you surmised -- a
>>> bug in our epoll implementation. I have pushed the fix:
>>>
>>>
>>> https://github.com/joyent/illumos-joyent/commit/471f1f3ef02e25a84d7c36c857ed260ae2b7ac99
>>>
>>> Thanks for taking the time for the clean test case -- and apologies for
>>> the bug!
>>>
>>> - Bryan
>>>
>>>
>>> On Thu, Jul 31, 2014 at 7:28 AM, Youzhong Yang <[email protected]>
>>> wrote:
>>>
>>>> Thanks Bryan.
>>>>
>>>> I take back what I said. epoll_* does not ignore epoll_event.data
>>>> passed in.
>>>>
>>>> I managed to reproduce the issue with a program rewritten from yours:
>>>>
>>>> # gcc myepoll.c
>>>> # ./a.out
>>>> EPOLL_CTL_ADD: fd = 4, ptr = fffffd7fffdffba0
>>>> writing to pipe fd 5
>>>> written 6 bytes to fd 5
>>>> Got an event on fd 4, events = 1, ptr = fffffd7fffdffba0
>>>> got 6 bytes from fd 5
>>>> EPOLL_CTL_DEL: fd = 4, ptr = fffffd7fffdffba0
>>>> EPOLL_CTL_ADD: fd = 4, ptr = fffffd7fffdffb80
>>>> writing to pipe fd 5
>>>> written 6 bytes to fd 5
>>>> Got an event on fd 4, events = 1, ptr = fffffd7fffdffba0
>>>> got 6 bytes from fd 5
>>>>
>>>> As it indicates, the issue here is that after EPOLL_CTL_DEL, and then
>>>> EPOLL_CTL_ADD of the same file descriptor with a new data.ptr, epoll_wait
>>>> still returns an old pointer.
>>>>
>>>> C code is attached for your reference.
>>>>
>>>> Thanks very much,
>>>>
>>>> -Youzhong
>>>>
>>>>
>>>> On Wed, Jul 30, 2014 at 5:38 PM, Bryan Cantrill <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>> Seems like a bug, but not sure I entirely understand: there may be
>>>>> some edge conditions where data specified in the "data" field of the
>>>>> epoll_event structure via epoll_ctl() is not properly returned, but it's
>>>>> not true that SmartOS simply ignores it. Take, for example, the following
>>>>> program:
>>>>>
>>>>> https://us-east.manta.joyent.com/bcantrill/public/epoll_add.c
>>>>>
>>>>> (It's essentially the most basic possible use of epoll(5).) Compiling
>>>>> that program and running it yields (for me, anyway) the same result on
>>>>> SmartOS as it does on Linux:
>>>>>
>>>>> $ ./epoll_add
>>>>> writing to pipe
>>>>> adding event...
>>>>> parent: got an event on fd 4
>>>>>
>>>>> I certainly don't doubt that there's a bug here -- I just don't think
>>>>> it's quite as broad as you're implying; could you point me to the core
>>>>> file
>>>>> for Samba and/or instructions as to how to reproduce the issue?
>>>>>
>>>>> - Bryan
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Jul 30, 2014 at 2:08 PM, Youzhong Yang via smartos-discuss <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> The man page of epoll_ctl says:
>>>>>>
>>>>>> The data field specifies the datum to be associated with the
>>>>>> event and will be returned via epoll_wait(3C). The events field
>>>>>> denotes both the desired events (when specified via epoll_ctl())
>>>>>> and the events that have occurred (when returned via
>>>>>> epoll_wait(3C)).
>>>>>>
>>>>>> This does not seem to be the case and is not compatible with Linux's
>>>>>> implementation. Recently I tried to compile Samba 4.1.10 on smartos and
>>>>>> 'net ads join' just crashes. Samba uses epoll_event.data.ptr to keep
>>>>>> track
>>>>>> of its tevent_fd data but epoll_ctl() on smartos simply ignores it and
>>>>>> does
>>>>>> not keep a copy of the 'data' structure and returns it when epoll_wait is
>>>>>> called.
>>>>>>
>>>>>> Can I assume this is an implementation specific bug?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> -Youzhong
>>>>>> *smartos-discuss* | Archives
>>>>>> <https://www.listbox.com/member/archive/184463/=now>
>>>>>> <https://www.listbox.com/member/archive/rss/184463/21493597-819305a5>
>>>>>> | Modify
>>>>>> <https://www.listbox.com/member/?&>
>>>>>> Your Subscription <http://www.listbox.com>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------------------------------------
smartos-discuss
Archives: https://www.listbox.com/member/archive/184463/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184463/25769125-55cfbc00
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769125&id_secret=25769125-7688e9fb
Powered by Listbox: http://www.listbox.com