lizmat gist.github.com/zaucker/5800adb925...00f5a717bc describes a repeatable segfault 17:38
that has been bisected to the 2025.02 release 17:39
[Coke] uhoh
lizmat I wonder if timo's 6f19ada9cb30a2477a9 has something to do with it 17:49
fwiw: Fritz Zaucker's project is Raku in production! 17:51
reproduced the segfault on MacOS 17:58
so it's not something JIT related
this is where I hope that timo nine MasterDuke might have some ideas 18:02
it appears easily reproducible (most of the time needed was to install Inline::Perl5 and Excel::Writer::XLSX in perl 18:03
timo oh, inline-perl5, i haven't worked with that ever
lizmat fwiw, I think it's NativeCall related, not specifically Inline::Perl5 18:04
timo does it work if you remove the `exit;` by chance? 18:05
lizmat yes
it's not in the teardown
you basically only need: 18:06
use Excel::Writer::XLSX:from<Perl5>; 18:07
Excel::Writer::XLSX.new('testseg.xlsx').add_format;
that's it
timo right, i installed it in my container now, now i need to install Inline::Perl5 as well
test failures >_> 18:09
lizmat interesting... installed clean for me on HEAD just now 18:10
timo probably some "fedora doesn't give you all of perl5" related issue 18:11
lizmat ah
timo [Inline::Perl5] Files=42, Tests=349, 12 wallclock secs
how do i get "zef test --verbose" to also give me the output from the tests instead of just the output of the harness? 18:12
Can't locate Test/More.pm in @INC (you may need to install the Test::More module) (@INC entries checked: /usr/local/lib64/perl5/5.40 /usr/local/share/perl5/5.40 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at (eval 7) line 2.
BEGIN failed--compilation aborted at (eval 7) line 2.
lizmat cpan install Test::More ?
timo i've installed all the other perl modules with dnf, but there is not perl-Test-More; does perl-Test-Most maybe give me what i need as well? 18:13
lizmat I have no active memory of that
timo Test-Simple has it 18:16
and i needed perl-Devel-Peek too 18:17
then it succeeds 18:18
lizmat Xliff looked at it: gist.github.com/zaucker/5800adb925...nt-5513939 18:25
Xliff_ <lizmat> that's why I suspect 6f19ada9cb30a2477a9 in MoarVM 18:34
Checking the commit, but can you explain why for us slow ppl?
timo it would be surprising to me if spesh kicked in so fast for that frame 18:35
turning off spesh should tell us if it could even be that commit, right? 18:44
lizmat segfaults with spesh turned off, so I guess that's not the one then 18:45
hmmm... maybe Rakudo's ea1831c79fc21ea3e5820 is to blame 18:46
linkable6 (2025-01-25) github.com/rakudo/rakudo/commit/ea1831c79f Lose Positional argument to BUILDALL
lizmat maybe Inline::Perl5 is assuming a BUILDALL is always available inside each class ? 18:48
timo i changed unwrap-perl5-object slightly and that got me from segfault to eating one cpu core and growing slowly in memory usage, apparently forever 18:57
lizmat ok, I moved back to one commit before the POPULATE change, and that does not segfault 18:59
now moving one commit ahead
segfault 19:02
so its github.com/rakudo/rakudo/commit/ea1831c79f
:-(
timo well, i'm glad to hear it's not my fault. but this isn't optimal 19:03
lizmat indeed, it isn't
timo we will want to add a test to Inline::Perl5 that provokes this situation so that it's at least regression-tested in a blin run
maybe nine can come up with some more tests for other outlandish-ish situations? i don't know what exactly it is that provokes this, though 19:04
lizmat tries an Inline::Perl5 patch
[Coke] I'm working on making sure we are actually *testing* Inline::Perl5 for releases. 19:10
timo that's good
[Coke] Not sure how long it's been, but I noticed in 2025.01 that we *try* to install it for testing, but then the stresstest that is supposed to include it complains it's not installed where it expects.
jdv iirc is hasn't been an issue for a very long time
timo so putting "install a working perl5 before running spec tests" in the instructions, and a little bit more than that i imagine
jdv but i guess good to check 19:11
raku and perl arent good friends anymore in case you missed it 19:12
timo and maybe some kind of flag that makes a missing or nonfunctional Inline::Perl5 abort the release rather than just putting a message in the log that "if you want to test inline::perl5 please install it"
lizmat ok, this is getting weird: now getting Can't locate Excel/Writer/XLSX.pm 19:48
with an unchanged Inline::Perl5 and with perl -MExcel::Writer::XLSX -e '' not producing an error 19:51
lizmat nukes install
ok, back to segfault 19:59
nine Too bad it's too late for the release. In hindsight it would have been better to turn BUILDALL into a multi rather than renaming it 20:05
lizmat I think I haz a patch 20:06
for Inline::Perl5
- for <BUILDALL bless can defined isa sink WHICH WHERE WHY ACCEPTS> { 20:07
+ for <BUILDPLAN bless can defined isa sink WHICH WHERE WHY ACCEPTS POPULATE> {
in lib/Inline/Perl5/ClassHOW.pm6
nine: want me to make a PR for that ? 20:14
nine That won't be correct on versions of Rakudo that *do* generate a BUILDALL, will it? 20:26
lizmat I will double check that, working on a PR right now 20:27
ok, the fix doesn't backport, will look at it tomorrow, too tired now 20:46
afk& 20:48
nine I'd think that simply checking whether the method actually exists before putting it into the cache would do the trick
lizmat that's what I tried, and it doesn't cut it :-(
+ for <BUILDPLAN bless can defined isa sink WHICH WHERE WHY ACCEPTS> -> $method {
+ %!cache{$method} := Mu.^method_table{$method}
+ if nqp::existskey(Mu.^method_table,$method);
}
a night's sleep will probably bring clarity 20:51
afk&
Xliff_ <layman>Maybe using <BUILDALL BUILDPLAN bless can defined isa sink WHICH WHERE WHY ACCEPTS> and maybe "die unless %!cache<BUILDALL> || %!cache<BUILDPLAN>" might work?</layman> 21:12
ugexe timo: use --debug instead of --verbose 21:55
timo thanks i'll remember it for the future 22:32