[phobos] Typo (bug) in std.concurrency

Lars Tandle Kyllingstad lars at kyllingen.net
Wed Jun 30 12:32:48 PDT 2010


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




More information about the phobos mailing list