[Mono-dev] WeakReference problem
Rodrigo Kumpera
kumpera at gmail.com
Thu Jan 30 21:12:13 UTC 2014
You're right, mono only returns false if the WR has been finalized. Thanks
for taking the
time to find a way to reproduce the issue. I just fixed it on master.
On Thu, Jan 30, 2014 at 12:56 PM, Tobias Käs <tobias.kaes at gmx.de> wrote:
> While trying to write a minimal test case I realized that mono actually
> never (?) returns false from WeakReference.TryGetTarget when the object has
> been collected, so this is pretty easy to reproduce and totally
> deterministic.
>
>
> using System;
> using System.Threading;
>
> static class Program {
> static WeakReference<object> wr;
>
> static void Main(string[] args) {
> Allocate();
> GC.Collect();
> GC.WaitForPendingFinalizers();
> GC.Collect();
> Check();
> }
>
> static void Allocate() {
> wr = new WeakReference<object>(new object());
> }
>
> static void Check() {
> object obj;
> if(wr.TryGetTarget(out obj) && obj == null) {
> throw new ApplicationException("assertion failed:
> object has been collected but TryGetTarget returned true");
> }
> }
> }
>
>
> Am 29.01.2014 23:41, schrieb Rodrigo Kumpera:
>
> Please provide a test case that shows this behavior
>
>
> On Wed, Jan 29, 2014 at 5:00 PM, Tobias Käs <tobias.kaes at gmx.de> wrote:
>
>> Hi, the generic WeakReference<T> for .NET 4.5 sometimes returns true from
>> TryGetTarget even though the target has been collected (the out-value is
>> correctly set to null). All my WeakReferences have been initialized with
>> non-null values.
>>
>> Looking at the source at github I can imagine that there is a race
>> between the handle.IsAllocated check and the handle.Target retrieval, but
>> I'm no expert. Should I file a bug on that one? I'm not sure what the
>> expected behavior is since MSDN documentation of that method isn't so
>> great, but if the caller has to check the out-value against null anyways,
>> then the return value becomes kinda pointless in my opinion.
>>
>> Regards,
>> Tobias
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20140130/9fdafebf/attachment.html>
More information about the Mono-devel-list
mailing list