Camelia, the Perl 6 bug

IRC log for #parrot, 2012-09-16

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:08 benabik joined #parrot
00:13 whiteknight rurban++
00:13 whiteknight I think threads will keep getting better and better with these kinds of updates
00:15 rurban I've also implemented now a cmdline option --numthreads and Parrot_set_num_threads(INTVAL) for run-time and rakudo.
00:16 rurban If I only could repro the remaining failures. I gave away my mac air to my wife
00:50 benabik joined #parrot
01:09 rurban ./parrot --numthreads 4000 t/src/threads.t nive
01:10 rurban nice
01:10 Coke joined #parrot
01:15 dalek parrot/threads: fba6c79 | rurban++ | / (9 files):
01:15 dalek parrot/threads: [GH #830] Implement platform Parrot_get_num_cpus
01:15 dalek parrot/threads:
01:15 dalek parrot/threads: Parrot_get_num_cpus is the new default instead of MAX_THREADS. Initialized at startup
01:15 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/fba6c79491
01:15 dalek parrot/threads: b6c1cda | rurban++ | / (7 files):
01:15 dalek parrot/threads: [GH #830] Add Parrot_set_num_threads and --numthreads cmdline
01:15 dalek parrot/threads:
01:15 dalek parrot/threads: The new parrot cmdline option --numthreads overrides Parrot_get_num_cpus().
01:15 dalek parrot/threads: Parrot_set_num_threads is called by Parrot_interp_initialize_interpreter()
01:15 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/b6c1cdaf9e
01:17 * rurban is off now until tomorrow.
01:19 kid51 joined #parrot
01:22 MikeFair joined #parrot
05:10 rurban joined #parrot
07:00 zby_home joined #parrot
07:50 brrt joined #parrot
07:51 dalek parrot/threads: 3bc6b23 | dukeleto++ | t/run/options.t:
07:51 dalek parrot/threads: [t] Add some tests for the new --numthreads command-line option #830
07:51 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/3bc6b233de
08:20 Psyche^ joined #parrot
08:53 alvis joined #parrot
09:14 tadzik msg whiteknight with the new patches threads.nqp run on parrot-nqp; still segfaults on nqp though
09:14 aloha OK. I'll deliver the message.
09:44 Ultali left #parrot
11:12 JimmyZ joined #parrot
11:19 rich joined #parrot
11:37 lucian joined #parrot
12:22 whiteknight joined #parrot
12:33 whiteknight good morning, #parrot
12:40 whiteknight hmmm, I wonder if nqp is doing it's own context monkeying on dispatch?
12:54 dalek rakudo/nom: 32309a4 | moritz++ | src/core/Mu.pm:
12:54 dalek rakudo/nom: fix thinko noticed by cognominal++
12:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/32309a4cda
12:59 kid51 joined #parrot
13:24 PacoAir joined #parrot
13:45 benabik joined #parrot
14:17 dalek nqp: 872ecdb | jnthn++ | src/NQP/ (2 files):
14:17 dalek nqp: Add an export trait for packages and get it to do the required installation.
14:17 dalek nqp: review: https://github.com/perl6/nqp/commit/872ecdb267
14:17 dalek nqp: 3fac7df | jnthn++ | src/stage0/ (9 files):
14:17 dalek nqp: Update bootstrap so we can use export updates in the NQP source itself.
14:17 dalek nqp: review: https://github.com/perl6/nqp/commit/3fac7df30b
14:17 dalek nqp: 2ea2f89 | jnthn++ | src/QRegex/Cursor.nqp:
14:17 dalek nqp: Clear up EXPORT hackery in favor of the new 'is export' trait.
14:17 dalek nqp: review: https://github.com/perl6/nqp/commit/2ea2f89532
14:34 rich left #parrot
14:48 dalek nqp: 1d3486a | jnthn++ | src/NQP/Actions.pm:
14:48 dalek nqp: Implement is export on routines.
14:48 dalek nqp: review: https://github.com/perl6/nqp/commit/1d3486a8a3
14:48 dalek nqp: bf091cc | jnthn++ | src/NQP/ (2 files):
14:48 dalek nqp: Implement import of exported symbols upon use.
14:48 dalek nqp: review: https://github.com/perl6/nqp/commit/bf091cc3b6
15:02 dalek rakudo/nom: 78efb65 | jnthn++ | / (2 files):
15:02 dalek rakudo/nom: Get latest NQP with better export handling, enabling elimination of a hack.
15:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/78efb655d3
15:23 particle left #parrot
15:25 alvis_ joined #parrot
15:28 lucian joined #parrot
15:29 JimmyZ joined #parrot
15:41 pmichaud joined #parrot
15:42 not_gerd joined #parrot
16:01 benabik diakopter reported built failure on Activeperl/MSVC2010: https://gist.github.com/3732946
16:01 benabik (in #perl6)
16:07 pmichaud I'm suspicious of https://github.com/parrot/parrot/commit/​b6584aea8567161aae4c9050f78ec77335956253, line 143 of src/dynpmc/Rules.in
16:07 pmichaud it's using $< in a makefile rule, which nmake doesn't seem to support.
16:14 not_gerd see http://msdn.microsoft.com/en-US/l​ibrary/cbes8ded%28v=vs.80%29.aspx
16:15 not_gerd $< is valid only in inference rules
16:16 pmichaud that would do it.
16:17 pmichaud on a somewhat related topic, it bothers me a bit that os.pmc in src/dynpmc/os.pmc declares an 'OS' PMC... that would seem to possibly conflict with the 'OS' PMC that is now defined in core Parrot.
16:17 pmichaud feels like the one in dynpmc ought to be 'OSdummy' or something like that.
16:27 particle joined #parrot
16:40 dalek rakudo/nom: 5aa57b9 | jnthn++ | src/ (2 files):
16:40 dalek rakudo/nom: Don't try to inline routines we know got wrapped before CHECK time.
16:40 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5aa57b9a73
16:54 dalek parrot: 76badef | benabik++ | src/dynpmc/Rules.in:
16:54 dalek parrot: dynpmc/Rules: Revert OS build rules to pre 97aa16a
16:54 dalek parrot:
16:54 dalek parrot: The rule to build os.str seems to be unnecessary and breaks nmake.
16:54 dalek parrot: review: https://github.com/parrot/parrot/commit/76badef98f
16:56 benabik pmichaud: Sadly, pmc2c wants the PMC class name to match the filename.
16:56 ttbot Parrot 76badef9 i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/96020
16:57 benabik Ooops.
16:57 benabik ls
16:57 benabik ww
16:59 not_gerd benabik: just replace the $< with the actual path src/dynpmc/os.c
16:59 benabik Bugs me that os.pmc didn't need a .str before.
17:01 travis-ci joined #parrot
17:01 travis-ci [travis-ci] parrot/parrot#553 (master - 76badef : Brian Gernhardt): The build was broken.
17:01 travis-ci [travis-ci] Change view : https://github.com/parrot/parrot/c​ompare/10f5111d8a70...76badef98ff7
17:01 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/2469467
17:01 travis-ci left #parrot
17:01 zby_home joined #parrot
17:03 benabik Huh.  There's already a prefix rule for .c.str
17:04 benabik Still bugs me that the empty dynpmc needs it and apparently none of the useful ones do.
17:20 whiteknight joined #parrot
17:21 dalek parrot: 32da9dd | benabik++ | src/dynpmc/Rules.in:
17:21 dalek parrot: os.pmc actually needs os.str
17:21 dalek parrot:
17:21 dalek parrot: I find this somewhat bizzare, given that it's basically empty, but
17:21 dalek parrot: don't know how to fix that.  Instead of using the old nmake-breaking
17:21 dalek parrot: rule, let the suffix rule in the main Makefile handle it.
17:21 dalek parrot: review: https://github.com/parrot/parrot/commit/32da9dd26c
17:21 benabik benabik-- # remember make clean and reconf when testing Makefile changes
17:23 benabik msg whiteknight You're better at the object system than I am.  Is the core OS PMC and the OS dynpmc going to conflict?
17:23 aloha OK. I'll deliver the message.
17:23 whiteknight hello benabik
17:24 benabik Ohai
17:24 whiteknight ...maybe?
17:24 whiteknight I think they will, yes
17:24 kid51 joined #parrot
17:24 whiteknight or maybe they won't
17:24 whiteknight do a test
17:24 whiteknight I *suspect* they may merge in some odd way
17:24 whiteknight or the dynpmc will overwrite the built-in
17:25 benabik Hm.
17:25 * benabik ponders how to test.
17:29 benabik Hm.  After using `.loadlib 'os'`, `OS.cwd()` still seems to work.
17:30 benabik jnthn++ tested my Rule changes, but got compiler errors instead: https://gist.github.com/3733333
17:36 rurban I found no way that the empty dympmc overwrites the core pmc. They share the same name, so no conflict.
17:36 rurban But thanks for the $< catch
17:36 travis-ci joined #parrot
17:36 travis-ci [travis-ci] parrot/parrot#554 (master - 32da9dd : Brian Gernhardt): The build was fixed.
17:36 travis-ci [travis-ci] Change view : https://github.com/parrot/parrot/c​ompare/76badef98ff7...32da9dd26cc7
17:36 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/2469742
17:36 travis-ci left #parrot
17:36 benabik The naive expectation is that things with the same name would conflict.
17:36 rurban The .str dep was added on purpose.
17:36 rurban Monkey patching, as in perl5
17:37 benabik rurban: Any idea what the errors jnthn got are? https://gist.github.com/3733333
17:38 whiteknight rurban: Can you still create a built-in OS and a dynpmc OS without conflicts?
17:38 rurban Just woke up, need my coffee first, then I'll look
17:38 rurban whiteknight: I tested it okay. But I have to retest now.
17:38 whiteknight ok
17:38 whiteknight how do you distinguish between the two types? namespacing?
17:39 rurban they share the same namespace, are both in memory. but since the dynpmc has no method the core pmc methods are used.
17:39 whiteknight okay, so they merge
17:43 rurban dynpmc's can dynamically override behaviour. later.  Our os dynpmc does so, but defines no methods. Since the class name as string is used and no pointer, we are safe. At least I think so.
17:43 rurban I have to reboot to init my vm's.
17:46 whiteknight okay, if things work reliably like that, it's a good solution to our problem
17:46 whiteknight rurban
17:46 whiteknight rurban++
17:46 rurban But I'll debug into it. And test windows (jontahans problem)
17:55 whiteknight jonathan has a problem?
17:55 benabik os dynpmc wont' build with activestate/msvc2010
17:55 rurban joined #parrot
17:57 rurban I also slept over numthreads. We need to move the threads from static into the heap. MAX_THREADS is a problem
18:03 whiteknight ok
18:03 contingencyplan joined #parrot
18:03 whiteknight can we make a new branch for that change?
18:03 whiteknight I want to keep threads as stable as possible until a merge
18:06 rurban For the heap, yes. I think A got a thinko also, which I might have to fix. And I want nine's opinion for the heap change.
18:07 whiteknight The heap change shouldn't be too bad
18:08 whiteknight Tadzik is reporting one more segfault in nqp only. I suspect one of their core types is going to need to be updated for threads
18:08 tadzik I'm not sure, but I think it's about nqp having its own LexPads
18:09 rurban I need more reboots. I renamed my logical lvm's and my qemu's. Got a bigger harddisc.
18:11 rurban joined #parrot
18:12 whiteknight tadzik: that may be. I was suspecting dispatchersub, but I remembered nqp got rid of it
18:12 whiteknight I need to dig in and debug
18:33 rurban I had to add Parrot_get_num_threads() function for the scheduler
18:35 rurban I think a make test_nqp and test_rakudo target would make sense for us.
18:36 rurban Similar for other languages (downloading via git)
18:40 dalek parrot/threads: 0670c46 | rurban++ | / (4 files):
18:40 dalek parrot/threads: Protect threads_array from overflow, add Parrot_get_num_threads()
18:40 dalek parrot/threads:
18:40 dalek parrot/threads: Ensure that a manual numthreads argument does not exceed the allocated
18:40 dalek parrot/threads: MAX_THREADS.
18:40 dalek parrot/threads: The scheduler needs to know the number of threads.
18:40 dalek parrot/threads: Let Parrot_set_num_threads return the number of set num_threads, which
18:40 dalek parrot/threads: might be -1 in case of errors.
18:40 dalek parrot/threads:
18:40 dalek parrot/threads: Enhance the documentation.
18:40 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/0670c46203
18:48 not_gerd left #parrot
19:20 whiteknight we have a test_all_hll target or something
19:23 rurban Coudl repro some msvc problems with dynpmc/os
19:23 MikeFair howdy all :)
19:25 dalek parrot: e482edc | rurban++ | src/dynpmc/Rules.in:
19:25 dalek parrot: dynpmc/os: nmake fix, $< invalid for os.str
19:25 dalek parrot:
19:25 dalek parrot: $< is only valid for suffix rules, and also then not for nmake
19:25 dalek parrot: review: https://github.com/parrot/parrot/commit/e482edc336
19:33 whiteknight hello MikeFair
19:34 MikeFair whiteknight: What magical beasts are you saving us from today whiteknight? :)
19:35 whiteknight looking at a few remaining issues for the threads branch merge
19:37 lucian joined #parrot
19:39 rurban I named my branch rurban/threads_array_heap
19:40 whiteknight great
19:42 TonyC joined #parrot
19:44 benabik rurban: Was that rule required?  Why doesn't the generic .c.str rule work?
19:45 rurban nmake does not grok implicit suffix rules
19:46 rurban or it does, but $< in the explicit rule is certainly wrong
19:46 benabik There are no explicit rules for any other .str files.
19:46 rurban yes. it's strange
19:51 rurban I have even stranger linking problems with dynpmc/os. STRINGNULL and PMCNULL does not seem to be exported.
19:54 rurban Oh, I see. cl does not allow duplicate symbols, same as HP/UX
19:54 rurban So I need some patching for the osdummy
19:55 rurban Eitjher patch loadlib to ignore os, or patch the resulting dynpmc/os.c
20:01 rurban But msvc link is just too stupid. It cannot tell that there are duplicate symbols to be linked.
20:11 travis-ci joined #parrot
20:11 travis-ci [travis-ci] parrot/parrot#555 (master - e482edc : Reini Urban): The build is pending.
20:11 travis-ci [travis-ci] Change view : https://github.com/parrot/parrot/c​ompare/32da9dd26cc7...e482edc3363d
20:11 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/2470752
20:11 travis-ci left #parrot
20:18 travis-ci joined #parrot
20:18 travis-ci [travis-ci] parrot/parrot#555 (master - e482edc : Reini Urban): The build is pending.
20:18 travis-ci [travis-ci] Change view : https://github.com/parrot/parrot/c​ompare/32da9dd26cc7...e482edc3363d
20:18 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/2470752
20:18 travis-ci left #parrot
20:32 perlite joined #parrot
21:02 rurban I have to rewrite our dynpmc/os to dynpmc/osdummy
21:03 rurban name clashes on windows and hpux
21:20 rurban oops, I'm too stupid. it was a non-dynamic pmc. That's why the names clashed. With the change to pmclass OS dynpmc it works fine. Smoking msvc parrot now
21:37 rurban http://smolder.parrot.org/app/​projects/report_details/31409 with the wrong os.pmc
21:42 rurban I also know why os.str was created. because it was a pmc, and pmc have .str files, dynpmc's not
21:49 dalek parrot: 8874c43 | rurban++ | / (4 files):
21:49 dalek parrot: Fixed dynpmc/os windows reveiled duplicate names
21:49 dalek parrot:
21:49 dalek parrot: Fixed several bugs in the dummy dynpmc os:
21:49 dalek parrot: The dynpmc/os was a static pmc. msvc could not link duplicate names.
21:49 dalek parrot: I had to change the pmc to dynpmc, and had to rename the os to osdummy,
21:49 dalek parrot: which is installed as os.so/bundle/dll. Tested ok on msvc.
21:49 dalek parrot: review: https://github.com/parrot/parrot/commit/8874c43719
21:51 rurban And this is the good smoke http://smolder.parrot.org/app/​projects/report_details/31410 after the fix
21:52 dalek parrot/threads: 76badef | benabik++ | src/dynpmc/Rules.in:
21:52 dalek parrot/threads: dynpmc/Rules: Revert OS build rules to pre 97aa16a
21:52 dalek parrot/threads:
21:52 dalek parrot/threads: The rule to build os.str seems to be unnecessary and breaks nmake.
21:52 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/76badef98f
21:52 dalek parrot/threads: 32da9dd | benabik++ | src/dynpmc/Rules.in:
21:52 dalek parrot/threads: os.pmc actually needs os.str
21:52 dalek parrot/threads:
21:52 dalek parrot/threads: I find this somewhat bizzare, given that it's basically empty, but
21:52 dalek parrot/threads: don't know how to fix that.  Instead of using the old nmake-breaking
21:52 dalek parrot/threads: rule, let the suffix rule in the main Makefile handle it.
21:52 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/32da9dd26c
21:52 dalek parrot/threads: e482edc | rurban++ | src/dynpmc/Rules.in:
21:52 dalek parrot/threads: dynpmc/os: nmake fix, $< invalid for os.str
21:52 dalek parrot/threads:
21:52 dalek parrot/threads: $< is only valid for suffix rules, and also then not for nmake
21:52 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/e482edc336
21:52 dalek parrot/threads: 8874c43 | rurban++ | / (4 files):
21:52 dalek parrot/threads: Fixed dynpmc/os windows reveiled duplicate names
21:53 dalek parrot/threads:
21:53 dalek parrot/threads: Fixed several bugs in the dummy dynpmc os:
21:53 dalek parrot/threads: The dynpmc/os was a static pmc. msvc could not link duplicate names.
21:53 dalek parrot/threads: I had to change the pmc to dynpmc, and had to rename the os to osdummy,
21:53 dalek parrot/threads: which is installed as os.so/bundle/dll. Tested ok on msvc.
21:53 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/8874c43719
21:53 dalek parrot/threads: ac5be43 | rurban++ | / (4 files):
21:53 dalek parrot/threads: Merge remote-tracking branch 'origin/master' into threads
21:53 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/ac5be4360a
21:54 rurban I really need to develop more on windows. It reveils stupid bugs. jnthn is right.
21:58 MikeFair rurban: FWIW I like/respect Windows for many things I think it does well :)
21:58 MikeFair rurban: Or at least functionally
22:02 rurban I think there is a small security issue with loading wrong loadlibs. The name if the loaded class is not checked. I think we shoudl not fix it. But I'll create a ticket.
22:03 MikeFair rurban: You mean somebody replacing the file with something else?
22:03 MikeFair rurban: Or the class within the pbc?
22:04 rurban Somebody copying a bad dynpmc/foo.so
22:04 rurban Or from a different load-path
22:05 MikeFair rurban: yeah that's a security issue with windows regardless, I'm not totally sure how you protect against that without doing some kind of "publicKey" type thing like what the CLR does
22:06 rurban On every system. But I believe it's not worth fixing, because you cannot override a already loaded class.
22:06 rurban You can override if you provide all methods of the old class.
22:06 MikeFair rurban: Not for the instances that already exist, but for new instances perhaps
22:06 rurban This is good for patching.
22:07 MikeFair rurban: The runtime patching of things is a seriously interesting space to me
22:07 MikeFair rurban: I'm really curious to understand how erlang does it
22:08 MikeFair rurban: I mean I get conceptually that they have a "current version" and new instances get that and old ones continue until they die off
22:11 MikeFair rurban: I think the key is to focus on replacing/loading something with code that presents something binary compatible with a that class' "interface" hiding the guts of implementing the class itself
22:13 MikeFair rurban: it's a working theory that I can replace the destination of the vtable entries with a new class implementation and the code 'should be' none the wiser (assuming children don't do bad things with implementation specific details of its parent classes)
22:14 MikeFair (though I consider children making those kinds of assumptions are 'asking for it') :)
22:19 rurban https://github.com/parrot/parrot/issues/831
22:21 rurban It must not be binary compatible. just respect the vtable api. provide the same methods.
22:21 rurban found 3 threads errors on windows. http://smolder.parrot.org/app/​projects/report_details/31420
22:23 rurban windows just stopped after new P1, "Task"; schedule P1
22:23 rurban Now I really have to load the MSVC IDE...
22:26 rurban Uuh. I have to register my MSVC 9 Express Edition. Free but I need an Microsoft account.
22:45 rurban The MSVC IDE is seriously superior to anything on Linux. Found a nice threading bug.
22:48 rurban num_cpu = 1 will not work :) need at least two threads.
22:54 dalek parrot/threads: afffe06 | rurban++ | src/thread.c:
22:54 dalek parrot/threads: Verify that at least 2 threads are created
22:54 dalek parrot/threads:
22:54 dalek parrot/threads: For a single CPU default to 4 created threads.
22:54 dalek parrot/threads: For Parrot_set_num_threads verify at least 2, one is needed for sleep
22:54 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/afffe06e14
23:01 MikeFair rurban: You want use mine?
23:01 MikeFair rurban: nm looks like you handled it
23:01 rurban What yours?
23:02 MikeFair MS account
23:02 MikeFair rurban: I'm glad I'm not the only one who thinks MSVisual Studio is a nice IDE
23:03 MikeFair rurban: Have you seen Lightable?
23:04 MikeFair http://www.kickstarter.com/p​rojects/ibdknox/light-table
23:05 MikeFair he was Project Manager for Visual Studio at the time and got a vision for 'something better'
23:05 rurban I created an account, not prob.
23:05 MikeFair Just over on #Perl6 the idea came up to use Blender as an IDE/Debugger
23:06 MikeFair I like the idea myself a lot
23:06 rurban Lightable looks cool, will try it out. Eclipse is on my list also.
23:06 MikeFair rurban: I'veused eclipse often enough.. I find it "confusing"
23:07 MikeFair rurban: and its such a fiefdom oriented community that it's difficult to know what works with what
23:07 MikeFair rurban: While I don't use emacs, I always feel like 'this must be what Emacs feels like' when I'm using it
23:10 MikeFair rurban: And eclipse has many 'wrong ways' to try and do something that seem like they should work but aren't -- for instance "build" doesn't necessarily mean the same thing in all places.  It could mean something different depending on the menu you selected it from -- and usually the one you want is buried a couple layers in a submenu
23:11 dalek parrot/threads: e488202 | rurban++ | src/scheduler.c:
23:11 dalek parrot/threads: More threads sanity checks
23:11 dalek parrot/threads:
23:11 dalek parrot/threads: On single-cpu windows I had the case of NULL candidate, when looking
23:11 dalek parrot/threads: for the thread with the fewest tasks.
23:11 dalek parrot/threads: Bail out with "Could not find a free thread" when no free thread is found, even
23:11 dalek parrot/threads: when Parrot_thread_get_free_threads_array_index() returned -1 (all threads allocated).
23:11 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/e4882026da
23:11 MikeFair I appreciate and respect the complexity and flexibility they've built, but I have not been able to really completely grok it yet... though I get better everytime I use it
23:13 rurban threads are getting better and better...
23:13 rurban wonder if darwin/x86 passes now.
23:14 MikeFair that's exciting to hear
23:15 rurban lightable uses lisp. no wonder that's it is superior. looks like an old lisp machine
23:15 MikeFair good working threading means you're a grown up VM to ppl :)
23:15 MikeFair rurban: hehe - I didn't know that yet
23:17 sorear rurban: I have a darwin/amd64 machine
23:17 MikeFair rurban: Question for you about threading, aside from ease of coding in separate logic trains - is there any advantage to having 'execution threads' > 'num cpus'
23:17 sorear MikeFair: blocking i/o operations
23:18 MikeFair sorear: Well that could also be viewed a separate logic thread -- eventually that blocked thread need back on the CPU
23:19 rurban The closest visual debugger I know is adg/affinic debugger
23:19 rurban sorear: do you want to smoke the latest parrot threads branch?
23:19 sorear rurban: sure.  how?
23:19 rurban hwo many cpu's do you have?
23:19 MikeFair I'm thinking of a VM model where a thread is a virtual CPU object in the VM and everything else is a "task"
23:19 rurban git checkout threads; perl Configure; make smoke
23:20 sorear rurban: think 2, not sure
23:20 rurban I just fixed an issue with single-cpu
23:20 sorear yeah 2
23:20 rurban two might also be a corner case.
23:21 sorear I guess I need to check out parrot first
23:21 rurban with 2 cpu's we run only two threads. might be a bit too less.
23:21 sorear I have 1 package though, might confuse your code
23:21 sorear github.com/parrot/parrot?
23:21 rurban yes
23:22 rurban git clone https://github.com/parrot/parrot.git
23:22 rurban and maybe cpan TAP::Harness::Archive
23:23 rurban hmm, one more error in t/src/threads_io.t on windows
23:26 rurban cleanup is also pretty slow...
23:27 sorear started make smoke
23:27 rurban thanks. I suspect one fail in t/src/threads_io.t
23:29 sorear test phase begun
23:29 rurban good. it found your number of cpu's (new code written from scratch)
23:30 sorear how do you know?  would it have aborted?
23:30 sorear or is it streaming to smolder?
23:30 rurban It's an Configure probe.
23:30 rurban no streaming yet :)
23:30 rurban It would have failed in auto::cpu
23:30 rurban I haven't tested on darwin yet.
23:31 sorear t/src/embed and t/src/extend failed, t/src/threads_io passed
23:31 rurban but darwin has /proc/cpuinfo so it's easy.
23:31 rurban interesting...
23:31 sorear cat: /proc/cpuinfo: No such file or directory
23:32 rurban also interesting. when we find no num_cpus we just use a default.
23:33 sorear Test report successfully sent to Smolder at
23:33 sorear http://smolder.parrot.org/app/​projects/report_details/31422
23:33 sorear also I have 2>&1 | tee output for both configure and make
23:33 rurban We need someone on darwin to fix the simple embed problems. my wife arrives next week with my air.
23:34 rurban _Parrot_new_string flat namespace. interesting
23:34 sorear how can I ask parrot to test num_cpus probing?
23:35 rurban there's no test for it yet. I jump into the debugger. gdb --args ./parrot t/pmc.task.t
23:35 rurban b Parrot_thread_init_threads_array
23:36 sorear https://gist.github.com/123d73d33c08adbb5081
23:37 sorear running just "./parrot" without gdb also dies horribly
23:39 rurban on darwin there's no rpath, yes. you'd need to set the DYLD path somehow.
23:40 rurban libparrot.dylib not found.
23:40 sorear how?
23:40 rurban I forgot...
23:40 sorear or rather, to what?
23:40 sorear DYLD_LIBRARY_PATH=Something ./parrot
23:41 rurban It's in blib/lib I guess
23:41 rurban yes
23:41 dalek parrot/threads: 790f343 | rurban++ | src/thread.c:
23:41 dalek parrot/threads: Tune num_threads
23:41 dalek parrot/threads:
23:41 dalek parrot/threads: Via API the minimum num_threads is 2. One for sleep.
23:41 dalek parrot/threads:
23:41 dalek parrot/threads: Via default Parrot_get_num_cpus() use 4 as default, if
23:41 dalek parrot/threads: <= 2 cpu's are found.
23:41 dalek parrot/threads: This leaves dual-cpu's with a bit more threads.
23:41 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/790f343ef1
23:41 rurban I just gave you two more threads for dual-cpu's.
23:42 sorear Parrot_get_num_cpus returned 4
23:42 sorear !?
23:42 rurban But your problem seems to be unrelated to threads.
23:43 rurban hyperthreads maybe
23:43 rurban 4 is a good number
23:43 rurban So the scheduler has something to do.
23:47 rurban I guess your t/src/embed.t and extend problems are also related to a missing rpath resp. DYLD_LIBRARY_PATH
23:47 rurban We seriously need to check our test libs
23:53 rurban Interesting. On Windows t/src/threads_io.t works sometimes, sometimes not.
23:53 rurban Looks racy.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced