<div dir="ltr">Thanks <span style="font-family:arial,sans-serif;font-size:13px">Philipp- the issue here is that chuck doesn't cleanly handle the situation where a function is declared to return something, but no return statement is ever actually executed in the function definition. Calling such a function more than a few times is almost guaranteed to cause a crash, though it depends on the code around the function call too. </span><div>
<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">This is actually a somewhat difficult bug to solve -- we've known about it for a while, but haven't come up with a good fix yet. </span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">spencer</span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sun, Nov 17, 2013 at 8:05 PM, Philipp Kroos <span dir="ltr"><<a href="mailto:philipp.kroos@gmail.com" target="_blank">philipp.kroos@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi guys,<br>
<br>
I can reliably crash the VM with the following file if I uncomment the<br>
crashes()-function call.<br>
Sorry for the formatting. The really most weird thing is that the<br>
crash is 'triggered' only if I loop more then 4 times...<br>
Following the file you'll find the output of uname -a and chuck<br>
--version, and the backtrace.<br>
I wasn't sure if I should post here or on the users list, but since<br>
I'm a programmer I decided for this list. So let me<br>
know if you have any ideas that I could try out.<br>
<br>
Cheers, Philipp<br>
<br>
<br>
<br>
/* chuck file start */<br>
fun int dontCallMe () {<br>
}<br>
<br>
fun int iamOk () {<br>
return 0;<br>
}<br>
<br>
fun void crashes () {<br>
for (0 => int j; j < 5; j++) {<br>
dontCallMe ();<br>
1::ms => now;<br>
}<br>
}<br>
<br>
fun void crashesNot () {<br>
for (0 => int j; j < 5; j++) {<br>
iamOk ();<br>
1::ms => now;<br>
}<br>
}<br>
<br>
fun void thisNeither () {<br>
for (0 => int j; j < 4; j++) {<br>
dontCallMe ();<br>
1::ms => now;<br>
}<br>
}<br>
<br>
<br>
//crashes ();<br>
crashesNot ();<br>
thisNeither ();<br>
<br>
/* chuck file end */<br>
<br>
<br>
chuck --version:<br>
chuck version: 1.3.2.0 (chimera)<br>
   linux (jack) : 32-bit<br>
   <a href="http://chuck.cs.princeton.edu/" target="_blank">http://chuck.cs.princeton.edu/</a><br>
   <a href="http://chuck.stanford.edu/" target="_blank">http://chuck.stanford.edu/</a><br>
<br>
<br>
uname -a:<br>
Linux vostro 3.11.6-1-ARCH #1 SMP PREEMPT Sat Oct 19 00:29:46 CEST<br>
2013 i686 GNU/Linux<br>
<br>
<br>
<br>
*** Error in `chuck': double free or corruption (!prev): 0x085399f0 ***<br>
======= Backtrace: =========<br>
/usr/lib/libc.so.6(+0x6d6b3)[0xb72946b3]<br>
/usr/lib/libc.so.6(+0x7381a)[0xb729a81a]<br>
/usr/lib/libc.so.6(+0x7445c)[0xb729b45c]<br>
/usr/lib/libstdc++.so.6(_ZdlPv+0x1f)[0xb7515a0f]<br>
/usr/lib/libstdc++.so.6(_ZdaPv+0x1b)[0xb7515a5b]<br>
chuck[0x805d572]<br>
chuck[0x805d759]<br>
chuck[0x805d930]<br>
chuck[0x805b82f]<br>
chuck[0x805ba08]<br>
chuck[0x805bab0]<br>
chuck[0x805085d]<br>
/usr/lib/libc.so.6(__libc_start_main+0xf3)[0xb72409d3]<br>
chuck[0x8052b69]<br>
======= Memory map: ========<br>
08048000-081bc000 r-xp 00000000 08:09 3151140<br>
/home/philipp/Audio/Chuck/ChuckSource/chuck-1.3.2.0/src/chuck<br>
081bc000-081e3000 rw-p 00173000 08:09 3151140<br>
/home/philipp/Audio/Chuck/ChuckSource/chuck-1.3.2.0/src/chuck<br>
081e3000-08226000 rw-p 00000000 00:00 0<br>
083cb000-0855a000 rw-p 00000000 00:00 0          [heap]<br>
b0b00000-b0b21000 rw-p 00000000 00:00 0<br>
b0b21000-b0c00000 ---p 00000000 00:00 0<br>
b0d00000-b0d21000 rw-p 00000000 00:00 0<br>
b0d21000-b0e00000 ---p 00000000 00:00 0<br>
b0e87000-b0e88000 ---p 00000000 00:00 0<br>
b0e88000-b1688000 rw-p 00000000 00:00 0          [stack:9315]<br>
b1688000-b1689000 ---p 00000000 00:00 0<br>
b1689000-b1e89000 rw-p 00000000 00:00 0<br>
b6d00000-b6d21000 rw-p 00000000 00:00 0<br>
b6d21000-b6e00000 ---p 00000000 00:00 0<br>
b6e68000-b6e69000 ---p 00000000 00:00 0<br>
b6e69000-b6ee9000 rw-p 00000000 00:00 0<br>
b6ee9000-b6eea000 ---p 00000000 00:00 0<br>
b6eea000-b6f6a000 rw-p 00000000 00:00 0<br>
b6f6a000-b6f6b000 ---p 00000000 00:00 0<br>
b6f6b000-b6fef000 rw-p 00000000 00:00 0<br>
b6fef000-b6ff5000 r-xp 00000000 08:05 161673     /usr/lib/libogg.so.0.8.1<br>
b6ff5000-b6ff6000 r--p 00005000 08:05 161673     /usr/lib/libogg.so.0.8.1<br>
b6ff6000-b6ff7000 rw-p 00006000 08:05 161673     /usr/lib/libogg.so.0.8.1<br>
b6ff7000-b7021000 r-xp 00000000 08:05 152013     /usr/lib/libvorbis.so.0.4.6<br>
b7021000-b7022000 r--p 00029000 08:05 152013     /usr/lib/libvorbis.so.0.4.6<br>
b7022000-b7023000 rw-p 0002a000 08:05 152013     /usr/lib/libvorbis.so.0.4.6<br>
b7023000-b7189000 r-xp 00000000 08:05 152016     /usr/lib/libvorbisenc.so.2.0.9<br>
b7189000-b719a000 r--p 00165000 08:05 152016     /usr/lib/libvorbisenc.so.2.0.9<br>
b719a000-b719b000 rw-p 00176000 08:05 152016     /usr/lib/libvorbisenc.so.2.0.9<br>
b719b000-b71cf000 r-xp 00000000 08:05 151995     /usr/lib/libFLAC.so.8.3.0<br>
b71cf000-b71d0000 r--p 00034000 08:05 151995     /usr/lib/libFLAC.so.8.3.0<br>
b71d0000-b71d1000 rw-p 00035000 08:05 151995     /usr/lib/libFLAC.so.8.3.0<br>
b71d1000-b721b000 r-xp 00000000 08:05 139847     /usr/lib/libdbus-1.so.3.7.5<br>
b721b000-b721c000 r--p 00049000 08:05 139847     /usr/lib/libdbus-1.so.3.7.5<br>
b721c000-b721d000 rw-p 0004a000 08:05 139847     /usr/lib/libdbus-1.so.3.7.5<br>
b721d000-b721e000 rw-p 00000000 00:00 0<br>
b721e000-b7225000 r-xp 00000000 08:05 133596     /usr/lib/<a href="http://librt-2.18.so" target="_blank">librt-2.18.so</a><br>
b7225000-b7226000 r--p 00006000 08:05 133596     /usr/lib/<a href="http://librt-2.18.so" target="_blank">librt-2.18.so</a><br>
b7226000-b7227000 rw-p 00007000 08:05 133596     /usr/lib/<a href="http://librt-2.18.so" target="_blank">librt-2.18.so</a><br>
b7227000-b73d0000 r-xp 00000000 08:05 132898     /usr/lib/<a href="http://libc-2.18.so" target="_blank">libc-2.18.so</a><br>
b73d0000-b73d1000 ---p 001a9000 08:05 132898     /usr/lib/<a href="http://libc-2.18.so" target="_blank">libc-2.18.so</a><br>
b73d1000-b73d3000 r--p 001a9000 08:05 132898     /usr/lib/<a href="http://libc-2.18.so" target="_blank">libc-2.18.so</a><br>
b73d3000-b73d4000 rw-p 001ab000 08:05 132898     /usr/lib/<a href="http://libc-2.18.so" target="_blank">libc-2.18.so</a><br>
b73d4000-b73d7000 rw-p 00000000 00:00 0<br>
b73d7000-b73f2000 r-xp 00000000 08:05 133144     /usr/lib/libgcc_s.so.1<br>
b73f2000-b73f3000 rw-p 0001a000 08:05 133144     /usr/lib/libgcc_s.so.1<br>
b73f3000-b7437000 r-xp 00000000 08:05 132897     /usr/lib/<a href="http://libm-2.18.so" target="_blank">libm-2.18.so</a><br>
b7437000-b7438000 r--p 00043000 08:05 132897     /usr/lib/<a href="http://libm-2.18.so" target="_blank">libm-2.18.so</a><br>
b7438000-b7439000 rw-p 00044000 08:05 132897     /usr/lib/<a href="http://libm-2.18.so" target="_blank">libm-2.18.so</a><br>
b7439000-b7451000 r-xp 00000000 08:05 132847     /usr/lib/<a href="http://libpthread-2.18.so" target="_blank">libpthread-2.18.so</a><br>
b7451000-b7452000 r--p 00017000 08:05 132847     /usr/lib/<a href="http://libpthread-2.18.so" target="_blank">libpthread-2.18.so</a><br>
b7452000-b7453000 rw-p 00018000 08:05 132847     /usr/lib/<a href="http://libpthread-2.18.so" target="_blank">libpthread-2.18.so</a><br>
b7453000-b7456000 rw-p 00000000 00:00 0<br>
b7456000-b74c1000 r-xp 00000000 08:05 152046     /usr/lib/libsndfile.so.1.0.25<br>
b74c1000-b74c3000 r--p 0006a000 08:05 152046     /usr/lib/libsndfile.so.1.0.25<br>
b74c3000-b74c4000 rw-p 0006c000 08:05 152046     /usr/lib/libsndfile.so.1.0.25<br>
b74c4000-b74c8000 rw-p 00000000 00:00 0<br>
b74c8000-b74cb000 r-xp 00000000 08:05 133597     /usr/lib/<a href="http://libdl-2.18.so" target="_blank">libdl-2.18.so</a><br>
b74cb000-b74cc000 r--p 00002000 08:05 133597     /usr/lib/<a href="http://libdl-2.18.so" target="_blank">libdl-2.18.so</a><br>
b74cc000-b74cd000 rw-p 00003000 08:05 133597     /usr/lib/<a href="http://libdl-2.18.so" target="_blank">libdl-2.18.so</a><br>
b74cd000-b75aa000 r-xp 00000000 08:05 133135     /usr/lib/libstdc++.so.6.0.18<br>
b75aa000-b75ae000 r--p 000dc000 08:05 133135     /usr/lib/libstdc++.so.6.0.18<br>
b75ae000-b75af000 rw-p 000e0000 08:05 133135     /usr/lib/libstdc++.so.6.0.18<br>
b75af000-b75b6000 rw-p 00000000 00:00 0<br>
b75b6000-b75fa000 r-xp 00000000 08:05 172795     /usr/lib/libjack.so.0.1.0<br>
b75fa000-b75fc000 r--p 00043000 08:05 172795     /usr/lib/libjack.so.0.1.0<br>
b75fc000-b75fd000 rw-p 00045000 08:05 172795     /usr/lib/libjack.so.0.1.0<br>
b75fd000-b76f1000 r-xp 00000000 08:05 139859     /usr/lib/libasound.so.2.0.0<br>
b76f1000-b76f5000 r--p 000f3000 08:05 139859     /usr/lib/libasound.so.2.0.0<br>
b76f5000-b76f6000 rw-p 000f7000 08:05 139859     /usr/lib/libasound.so.2.0.0<br>
b770d000-b771f000 rw-s 00000000 00:10 17126      /dev/shm/jack-shm-registry<br>
b7721000-b7723000 rw-p 00000000 00:00 0<br>
b7723000-b7724000 r-xp 00000000 00:00 0          [vdso]<br>
b7724000-b7744000 r-xp 00000000 08:05 132873     /usr/lib/<a href="http://ld-2.18.so" target="_blank">ld-2.18.so</a><br>
b7744000-b7745000 r--p 0001f000 08:05 132873     /usr/lib/<a href="http://ld-2.18.so" target="_blank">ld-2.18.so</a><br>
b7745000-b7746000 rw-p 00020000 08:05 132873     /usr/lib/<a href="http://ld-2.18.so" target="_blank">ld-2.18.so</a><br>
bfcd6000-bfcf7000 rw-p 00000000 00:00 0          [stack]<br>
zsh: abort (core dumped)  chuck <a href="http://debug.ck" target="_blank">debug.ck</a><br>
_______________________________________________<br>
chuck-dev mailing list<br>
<a href="mailto:chuck-dev@lists.cs.princeton.edu">chuck-dev@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-dev" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-dev</a><br>
<br>
</blockquote></div><br></div>