mbraceproject / FsPickler

A fast multi-format message serializer for .NET
http://mbraceproject.github.io/FsPickler/
MIT License
323 stars 54 forks source link

FsPickler 3.1.0 introduces a failure in the Vagabond tests #89

Closed dsyme closed 6 years ago

dsyme commented 7 years ago

Hi @eiriktsarpalis

Something in FsPickler 3.1.0 introduces a failure in a very simple Vagabond test related to pickling quotations, see https://github.com/mbraceproject/Vagabond/issues/20

Here are the commits between 3.0.0 and 3.1.0. They all look related to the "TypeShape" implementation: https://github.com/mbraceproject/FsPickler/compare/3.0.0...3.1.0

Here's the exception that gets thrown in the Vagabond test:

image

Any ideas? Thanks!

eiriktsarpalis commented 7 years ago

@dsyme the exception is unrelated, and more or less expected to happen. The hang seems to be caused by some failure in Thespian.

dsyme commented 7 years ago

@dsyme the exception is unrelated, and more or less expected to happen. The hang seems to be caused by some failure in Thespian.

Hmm... Well, something changed between 3.0.0 and 3.1.0 to cause this test failure... The test passes when using FsPickler 3.0.0... But I took a good look and didn't spot any specific changes which might be responsible, though there was a fair bit of churn

I'll check if the exception occurs when using 3.0.0. TBH it feels like the Vagabond actor controlling the state is making a self-request which never replies, my impression is that this was because of some unexpected failure

eiriktsarpalis commented 7 years ago

when debugging this myself I saw that the remote process received the bits and successfully ran the execution, the hang occurring when the result value was pushed back to the reply channel. Not saying this is not caused by FsPickler changes, but it looks like some kind of interplay with FsPickler and Thespian.

dsyme commented 7 years ago

@eiriktsarpalis Hmm, yes, the Thespian we're using was built with 3.0.0. Perhaps there is a binary incompatibility between 3.0.0 and 3.1.0 (or plausibly a logical incompatibility induced by cross-assembly inlining). I'll rebuild Thespian for 3.1.0 and try again.

dsyme commented 7 years ago

@eiriktsarpalis I tried updating Thespian too, but I got the same error. It really does seem to be some specific change for FsPickler 3.0.0 --> 3.1.0, unless I've made some mistake

eiriktsarpalis commented 7 years ago

Perhaps the next step is to include a debug build of FsPickler/Thespian in the vagabond setup

eiriktsarpalis commented 6 years ago

This has been fixed in the latest release of vagabond