[phobos] Typo (bug) in std.concurrency

Sean Kelly sean at invisibleduck.org
Wed Jun 30 12:49:02 PDT 2010


Sounds like a good idea.

On Jun 30, 2010, at 12:32 PM, Lars Tandle Kyllingstad wrote:

> This is somewhat unrelated, but the idea came to me as a workaround for
> the bug I just described:
> 
> Since there is an owner-owned relationship between threads, would it be
> a good idea to have an ownerTid() function?  I've noticed that there is
> a private 'owner' variable in std.concurrency, and I'm thinking
> something like this would be useful:
> 
>        @property Tid ownerTid()
>        {
>                enforce(owner, "Thread has no owner");
>                return owner;
>        }
> 
> -Lars
> 
> On Wed, 2010-06-30 at 12:27 -0700, Sean Kelly wrote:
>> Looks like it's time I start labeling references as shared in std.concurrency.  The static checking is new.
>> 
>> On Jun 30, 2010, at 12:15 PM, Lars Tandle Kyllingstad wrote:
>> 
>>> Great, thanks!  I can confirm that receiveTimeout() doesn't hang
>>> anymore.
>>> 
>>> I just encountered another problem with the SVN version of
>>> std.concurrency.  The following code is a simplified version of an idiom
>>> which is used in TDPL, namely, sending a Tid as a message:
>>> 
>>>       import std.concurrency;
>>> 
>>>       void main()
>>>       {
>>>           Tid someTid;
>>>           someTid.send(thisTid);
>>>       }
>>> 
>>> Upon compilation, I get the following error:
>>> 
>>> /home/lars/code/phobos-trunk/phobos/std/concurrency.d(217): Error:
>>> static assert  "Aliases to mutable thread-local data not allowed."
>>> a.d(6):        instantiated from here: send!(Tid)
>>> 
>>> I do not get this message when I compile with the released (2.047)
>>> version of std.concurrency.
>>> 
>>> -Lars
>>> 
>>> 
>>> On Wed, 2010-06-30 at 11:36 -0700, Sean Kelly wrote:
>>>> Okay, should be fixed now.
>>>> 
>>>> On Jun 30, 2010, at 8:38 AM, Sean Kelly wrote:
>>>> 
>>>>> Oh well, looks like I have even more fixing to do :-)
>>>>> 
>>>>> On Jun 30, 2010, at 7:35 AM, Lars Tandle Kyllingstad wrote:
>>>>> 
>>>>>> Yeah, I noticed that you committed the fix, but too late. :)  Due to
>>>>>> some server lag, I got the "phobos commit" message several hours after I
>>>>>> sent my e-mail, even though the commit was apparently done before I sent
>>>>>> it.
>>>>>> 
>>>>>> In case it's useful, I should mention that even after fixing the tuple
>>>>>> issue and changing the return type of receiveTimeout() to void, it still
>>>>>> doesn't work.  The following code hangs indefinitely:
>>>>>> 
>>>>>>     import std.concurrency;
>>>>>> 
>>>>>>     void main()
>>>>>>     {
>>>>>>             // Should only block for 1ms:
>>>>>>             receiveTimeout(1, (int i) { });
>>>>>>     }
>>>>>> 
>>>>>> -Lars
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, 2010-06-29 at 20:47 -0700, Sean Kelly wrote:
>>>>>>> The code has changed a ton recently and I hadn't gotten around to testing receiveTimeout yet. I'll take care of it. 
>>>>>>> 
>>>>>>> Sent from my iPhone
>>>>>>> 
>>>>>>> On Jun 29, 2010, at 4:09 PM, Lars Tandle Kyllingstad <lars at kyllingen.net> wrote:
>>>>>>> 
>>>>>>>> I'm guessing this error turned up because someone tried to use
>>>>>>>> receiveTimeout().  That's when it happened for me, at least.  But when I
>>>>>>>> fixed this, another error occurred:
>>>>>>>> 
>>>>>>>> receiveTimeout() is supposed to return a bool, but it tries to return
>>>>>>>> the result of MessageBox.get(), which is void.  So get() should, in the
>>>>>>>> case when ops[0] is an integer, somehow detect whether a message was
>>>>>>>> received within the time limit and return a bool.
>>>>>>>> 
>>>>>>>> Sean, if you aren't working on this already, I can look into it if you
>>>>>>>> like.
>>>>>>>> 
>>>>>>>> -Lars
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Tue, 2010-06-29 at 09:40 -0700, Sean Kelly wrote:
>>>>>>>>> Okay I guess that makes sense.  Should be easy enough to fix anyway.
>>>>>>>>> 
>>>>>>>>> On Jun 29, 2010, at 8:43 AM, Steve Schveighoffer wrote:
>>>>>>>>> 
>>>>>>>>>> You can't slice a tuple and assign it back to the same tuple type.
>>>>>>>>>> 
>>>>>>>>>> -Steve
>>>>>>>>>> 
>>>>>>>>>> ----- Original Message ----
>>>>>>>>>>> From: Sean Kelly <sean at invisibleduck.org>
>>>>>>>>>>> To: Discuss the phobos library for D <phobos at puremagic.com>
>>>>>>>>>>> Sent: Tue, June 29, 2010 11:39:50 AM
>>>>>>>>>>> Subject: Re: [phobos] Typo (bug) in std.concurrency
>>>>>>>>>>> 
>>>>>>>>>>> On Jun 29, 2010, at 7:00 AM, Simen Kjaeraas wrote:
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> http://d.puremagic.com/issues/show_bug.cgi?id=4406
>>>>>>>>>>> 
>>>>>>>>>>> Posting it 
>>>>>>>>>>> here too, to make sure it gets noticed. It's a rather simple fix.
>>>>>>>>>> 
>>>>>>>>>> You 
>>>>>>>>>>> can't slice a tuple?  Seriously?  I could have sworn that I tested 
>>>>>>>>>>> this and it worked.
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> phobos mailing list
>>>>>> phobos at puremagic.com
>>>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>>>> 
>>>>> _______________________________________________
>>>>> phobos mailing list
>>>>> phobos at puremagic.com
>>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>>> 
>>>> _______________________________________________
>>>> phobos mailing list
>>>> phobos at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/phobos
>>> 
>>> 
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>> 
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
> 
> 
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos



More information about the phobos mailing list