github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:26 colomon left 00:55 sena_kun left 02:28 ZzZombo joined 02:47 ZzZombo_ joined 02:50 ZzZombo left, ZzZombo_ is now known as ZzZombo 03:02 MasterDuke left 03:56 ZzZombo_ joined 04:00 ZzZombo left, ZzZombo_ is now known as ZzZombo 05:04 ZzZombo_ joined 05:07 ZzZombo left, ZzZombo_ is now known as ZzZombo 06:43 domidumont joined 07:24 domidumont left 07:25 domidumont joined 07:52 domidumont left 08:56 zakharyas joined 09:44 zakharyas left 09:46 zakharyas joined 10:04 zakharyas left 10:05 zakharyas joined 10:37 sena_kun joined 10:40 sena_kun left, sena_kun joined 10:45 zakharyas left 10:49 sena_kun left 10:53 zakharyas joined 11:09 Guest38485 joined
Kaeipi can someone review github.com/MoarVM/MoarVM/pull/1222 ? 11:13
nine?
11:30 zakharyas left
Guest38485 nine: I believe your nativecall fix from yesterday solved the GC related problems I had 12:06
is jnthn lurking around by any chance? 12:33
is there an easy way, for experimental reasons, to disable the MultiCache? 12:39
lizmat you mean, to do something like this? modules.raku.org/dist/InterceptAll...:ELIZABETH 13:11
afk&
Guest38485 let me investigate 13:12
jnthn You could probably just turn the add to multi cache function into a no-op by making it return immediately 13:14
I don't think there's any #define to disable it
13:22 zakharyas joined
Guest38485 jnthn: I assume you mean MVM_multi_cache_add ? 13:24
jnthn Yeah 13:25
13:31 lucasb joined
Guest38485 jnthn: thx for the help 14:10
excellent 14:13
14:38 sena_kun joined
Guest38485 turning off the MultiCache seems to solve the problem nine is hunting 14:43
nine Guest38485: wait, what? 14:44
Guest38485 i.e. this: Native call expected return type with CPointer representation, but got a P6opaque (Scalar)
nine How did you get on this track?
Guest38485 good question 14:45
I know there's a bug in there somewhere 14:46
try this
@@ -162,6 +162,7 @@ MVMObject * MVM_multi_cache_add(MVMThreadContext *tc, MVMObject *cache_obj, MVMO
cache_obj = MVM_repr_alloc_init(tc, tc->instance->boot_types.BOOTMultiCache);
});
}
+ return cache_obj;
cache = &((MVMMultiCache *)cache_obj)->body;
in src/6model/reprs/MVMMultiCache.c 14:47
nine Guest38485: good timing! My gc_torture run with the 2 fixes just completed successfully 14:52
Guest38485 cool, one fix was the 'pop' in NativeCall.c but what was the other one?
nine MVMROOTing sc
Guest38485 ah
about MVMROOTing sc, there are three functions in serialization.c doing similar stuff 14:54
MVM_serialization_demand_object, MVM_serialization_demand_stable and MVM_serialization_demand_code 14:55
does sc need protecting in all three?
nine Probably not. MVM_serialization_demand_object only needs it because NativeCall's deserialize disables the gen2_default flag for running the callback. Thereby GC can happen where it previously could not 14:56
Guest38485 phew 14:58
nine Guest38485: I still see rare segfaults even with all our fixes together. This one even more mysterious: (gdb) bt 15:21
#0 0x000000030000fe01 in ?? ()
#1 0x0000000000000000 in ?? ()
even though I compiled moar with debug info
Guest38485 that looks bizarre, what are you running?
jnthn Maybe JIT, maybe in a nativecall generated thunk thing? 15:22
Guest38485 I have been running csv-ip5xs.pl
nine csv-ip5xs.pl
Guest38485 :)
nine Who'd have thought that running callbacks during deserialization could cause so many issues? 15:23
jnthn Callbacks? During...deserialization?
Callbacks to...what? 15:24
nine jnthn: figured that would catch your attention :) github.com/MoarVM/MoarVM/commit/c7...762f75d34e 15:25
jnthn omg 15:27
nine yes, indeed
jnthn Yeah, that pretty much violates the entire "we'll never GC during this" assumption the deserialization code was written with :)
nine I did try everything else I could come up with before doing that, but everything failed :/
I'd still be happy to rip this out again and implement another solution
jnthn Did you consider something a bit like the mechanism used for conflict resolutions? 15:28
nine I don't think I'm aware of that
jnthn The deserialization process returns the things that are in conflict, so HLL code can sort them out
That's how stash merging gets sorted out
Let me remember what it's called... 15:29
But you could maybe do similar for things needing additional fixup work after deserialization
Which avoids the nested runloop problem
If you grep for repo_conflict_resolver in NQP/Rakudo you probably end up finding something useful 15:30
(repo in this case short for repossession)
nine Guest38485: I just got this even with the multi cache disabled as you pasted: Cannot iterate object with P6opaque representation (Scalar) in sub no-args at /home/nine/.perl6/precomp/0C84318D4D23C3D09B2963B1A856093E6F04953B/DB/DB8C95655A124A12F21C201495BF931C3B18E184 line 1 15:32
Guest38485 I got it as well 15:34
nine jnthn: so for a more sane implementation of my current solution, I'd have to have make NativeCall objects always cause conflicts, so they get on the list and then extend CompUnit::RepositoryRegistry.resolve_repossession_conflicts to run code that will determine the library's location and run nativecallbuild 15:37
jnthn nine: Umm...I was more thinking that there's a way to flag a type as "needs fixup" or some such 15:39
Well, I guess you can still put those on the same list and use null to signal it's a fixup case 15:40
But probably some types need to be told they're always in need of fixup, so whenever we deserialize one, put it onto the list
Or some list :)
nine This could open up interesting possibilities. Right now Inline::Perl5 supports precompilation by exporting an INIT phaser to its user. This phaser then restores the Perl 5 interpreter, loads Perl 5 modules and hooks up the wrappers again. All work that could be seen as part of deserialization. 15:43
I guess I should just let the bizarre issues be and move on to implement a proper solution right away. 4th time is the charm? :D 15:49
jnthn :D 15:50
15:52 Guest38485 left 16:19 Kaeipi left, Kaeipi joined 16:38 sena_kun left, zakharyas1 joined 16:40 zakharyas left 16:53 sena_kun joined 16:58 domidumont joined 17:23 zakharyas1 left 18:16 zakharyas joined 18:34 AlexDaniel left 18:38 sena_kun left 18:52 sena_kun joined 19:08 zakharyas left
nine Lazy deserialization makes everything a bit more complicated... 20:11
lizmat perhaps it would help if not everything were lazy ? 20:12
nine Nah...remember, we usually want everything! 20:15
Cake, eating, coffee, clean kitchen, ... 20:16
lizmat
.oO( let the torture continue! )
20:21
sena_kun can we wrap a moarvm release tomorrow? 20:30
20:39 sena_kun left 20:53 sena_kun joined 21:32 zakharyas joined 21:39 domidumont left 22:07 Kaeipi left 22:08 Kaiepi joined 22:09 zakharyas left 22:34 AlexDaniel joined, AlexDaniel left, AlexDaniel joined 22:39 sena_kun left 22:53 sena_kun joined