Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Punning a role in a different thread a bit fragile #5534

Open
p6rt opened this issue Aug 11, 2016 · 1 comment
Open

Punning a role in a different thread a bit fragile #5534

p6rt opened this issue Aug 11, 2016 · 1 comment
Labels

Comments

@p6rt
Copy link

p6rt commented Aug 11, 2016

Migrated from rt.perl.org#128896 (status was 'new')

Searchable as RT128896$

@p6rt
Copy link
Author

p6rt commented Aug 11, 2016

From @lizmat

[15​:08​:49] <lizmat> apart from a flapper on t/spec/S17-promise/start.t that I haven't had in a *long* time now, it seems ok
[15​:09​:25] <jnthn> ...oh admmit :(
[15​:09​:41] <jnthn> That's going to be a darn nightmare to find if it still flaps because it didn't fail in 100 runs yesterday.
[15​:09​:51] lizmat runs it again
[15​:11​:13] <lizmat> jnthn​: You planned 47 tests but ran 17 so it actually crashed
[15​:12​:10] <lizmat> Cannot invoke this object (REPR​: Null; VMNull)
[15​:12​:10] <lizmat> in block <unit> at t/spec/S17-promise/start.t line 70
[15​:14​:42] <lizmat> https://gist.github.com/lizmat/6ae3ea26c4addff0623e8b968fcaf3dd  # full stack trace
[15​:14​:51] <lizmat> jnthn​: ^^^
[15​:16​:51] <jnthn> hmm... Thanks.
[15​:18​:52] <lizmat> m​: say await start $/ # perhaps related ?
[15​:18​:52] <camelia> rakudo-moar 76be77​: OUTPUT«WARNINGS for <tmp>​:␤Useless use of $/ in sink context (line 1)␤Nil␤»
[15​:21​:56] <lizmat> jnthn​: looks like "my @​got = await do for 1..5 { start { buf8.new } }" is where it goes wrong, if it goes wrong
[15​:25​:19] <lizmat> jnthn​: datapoint​: removing the warnings still makes it crash occasionally ( I would say 1/30 with a fully loaded machine)
[15​:27​:09] <jnthn> lizmat​: And the above in a loop does it? :)
[15​:27​:25] <lizmat> jnthn​: another datapoint​: if the start uses a thunk, instead of a block, it also crashes 1/30
[15​:27​:43] <lizmat> jnthn​: I was running the test-file in a loop
[15​:27​:53] <lizmat> I'll try running that piece of code in a loop now
[15​:27​:57] <jnthn> ah, OK. Guess I got lucky 100 times :S
[15​:28​:11] <lizmat> or OSX is more picky or something
[15​:29​:11] <jnthn> OSX is good at shaking these things out, yes
[15​:29​:31] <lizmat> for ^100000 { my @​got = await do for 1..5 { start { buf8.new } } } # doesn't crash, runs for 33 secs
[15​:29​:50] <lizmat> so it feels like some test before it is messing things up
[15​:36​:39] <lizmat> jnthn​: not so nice datapoint​: removing all the tests before the one that crashees every now and then
[15​:36​:57] <lizmat> makes it *still* crash, but it feels like the chance of it is a lot smaller
[15​:37​:11] <lizmat> more like 1/60 or so
[15​:41​:43] <lizmat> jnthn​: can no longer make it crash when changing the "buf8.new" to "42"
[15​:42​:01] <lizmat> jnthn​: so it feels like some buf8.new / start interaction
[15​:45​:02] <ShimmerFairy> lizmat​: just thought of this​: what about Buf instead of buf8?
[15​:45​:29] <lizmat> ShimmerFairy​: actually,it seems related to the auto-punning of the buf8 role
[15​:45​:52] <ShimmerFairy> ah
[15​:45​:58] <lizmat> jnthn​: if I put back the "buf8.new", and add another "my $b = buf8.new" before it, I can't get it to crash
[15​:46​:16] <lizmat> jnthn​: so it feels like punning a role into a class from a different thread, is not quite ok
[15​:48​:14] <jnthn> lizmat​: I thought that'd been fixed, but yeah, it's quite an involved process so worth a look
[15​:51​:27] <lizmat> jnthn​: should I rakudobug this conversation ?
[15​:53​:43] <jnthn> lizmat​: Please. I suspect I'll be writing a mildly boring document the rest of today, and I'm meant to take tomorrow off-ish to relax :)

@p6rt p6rt added the conc label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant