-
Notifications
You must be signed in to change notification settings - Fork 10.3k
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
Remote target (for distributed actor) arguments are not properly deinitialized #65853
Comments
|
Thanks let me try to reproduce this |
|
Thanks, I was able to reproduce this -- we didn't really test with messages being classes as that's a bit unusual but of course it must be supported correctly. I'm investigating this more now. |
|
rdar://109207043 |
|
Thank you for the update. |
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
|
We reproduced and have a fix incoming, thank you very much for noticing this. |
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
|
Super, thanks! Just for our planning (whether we need to workaround this or not), is this going into 5.9 or is it later? |
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
|
There's no hard promises with these things but yes we've cherry picked it over to 5.9 as well, it should be able to land there AFAICS. |
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
Arguments that have been loaded due to underlying method conversion have to be destroyed after the call otherwise they are going to leak. Resolves: swiftlang#65853 Resolves: rdar://109207043
|
Hi! |
Remote target arguments reconstructed on the remote side of the distributed actor are not properly deinitialised.
If the remote target argument is a struct with some class instance references then those class instances are never released, which cause a memory leak.
We implemented minimised test
It perform a remote call on the distributed actor with a struct argument having a reference to the ClassValue instance.
Can find the ClassValue instance initialized twice (first time on the caller side, second time on the remote side), but reinitialised only once (on the caller side):
We would expect the second ClassValue instance constructed on the remote side would be deinitialised, thus the output would also had a line
Environment
The text was updated successfully, but these errors were encountered: