[phobos] Typo (bug) in std.concurrency

Lars Tandle Kyllingstad lars at kyllingen.net
Wed Jun 30 21:10:52 PDT 2010


I hate to be the one throwing all these problems at you, but here's
another one.  The following compiles and runs without error:

        import std.concurrency;
        
        void foo(int i) { }
        
        void main()
        {
                spawn(&foo);
                spawn(&foo, "hello world");
                spawn(&foo, "hello world", 3.14);
        }

Basically, it seems you can pass any set of parameters to spawn().  They
don't have to match foo()'s.  Note that a thread does indeed get spawned
in all of the cases above, and the parameter i contains a nonsense
value.

-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