Yes, raising exceptions may result in resource being leaked.

Speaking of implementation, raising an exception means jumping from
one stack location to another; and all the linear resources between these
two
locations are leaked.

On Thu, Jun 20, 2019 at 2:41 PM aditya siram <[email protected]> wrote:

> Valgrind shows a memory leak:
>
> ==465== Memcheck, a memory error detector
> ==465== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
> ==465== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
> ==465== Command: ./test
> ==465==
> exit(ATS): uncaught exception at run-time:
> test.dats:MyException(1024)
> ==465==
> ==465== HEAP SUMMARY:
> ==465==     in use at exit: 40 bytes in 2 blocks
> ==465==   total heap usage: 2 allocs, 0 frees, 40 bytes allocated
> ==465==
> ==465== LEAK SUMMARY:
> ==465==    definitely lost: 24 bytes in 1 blocks
> ==465==    indirectly lost: 0 bytes in 0 blocks
> ==465==      possibly lost: 0 bytes in 0 blocks
> ==465==    still reachable: 16 bytes in 1 blocks
> ==465==         suppressed: 0 bytes in 0 blocks
> ==465== Rerun with --leak-check=full to see details of leaked memory
> ==465==
> ==465== For counts of detected and suppressed errors, rerun with: -v
> ==465== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
>
>
>
>
> On Thursday, June 20, 2019 at 1:37:49 PM UTC-5, aditya siram wrote:
>>
>> This program for instance compiles:
>>
>> exception MyException of (list_vt(int))
>>
>> fun test(l : list_vt(int)): void =
>>     $raise MyException(l)
>>
>> implement main0(argc,argv) =
>>   test(list0_vt_cons(1,list0_vt_nil()))
>>
>>
>> but results in:
>> exit(ATS): uncaught exception at run-time:
>>
>>
>> I expect that but would also have expected that the type system would
>> require me to free 'l' at some point.
>>
>>
>> On Thursday, June 20, 2019 at 12:35:14 PM UTC-5, aditya siram wrote:
>>>
>>> Hi,
>>> That is closer but what I had in mind is what happens with an exception
>>> carries a linear resource, so in that example, imagine the exception was on
>>> the '~(x :: xs)' case and looked something like '$raise Exception(x)'. Here
>>> 'x' of type 'a' must be consumed whenever the exception is handled. My
>>> question is if the linear type system detects such cases.
>>>
>>>
>>> On Thursday, June 20, 2019 at 12:19:09 PM UTC-5, Richard wrote:
>>>>
>>>> Hello Aditya,
>>>>
>>>> I know this is not identical but checkout this example,
>>>>
>>>> https://github.com/githwxi/atslangweb/blob/master/ats2-lang/doc/EXAMPLE/INTRO/sieve_llazy.dats#L53
>>>>
>>>> The tilde tells the compiler to free the empty stream in this example.
>>>>
>>>> Is this similar to what you have in mind?
>>>>
>>>> --
> You received this message because you are subscribed to the Google Groups
> "ats-lang-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/ats-lang-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ats-lang-users/6ba9272d-424a-431f-b33e-482483653b23%40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/6ba9272d-424a-431f-b33e-482483653b23%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/CAPPSPLrwAXOuYO%2BC5JqJyguOdLsmQKr%3DF5%2B6wH0V8_YHh41VYg%40mail.gmail.com.

Reply via email to