<div dir="ltr">Sorry for the delay in getting back to you.<div><br></div><div>I think that what you&#39;re seeing here is just the imprecision in stack traces that has to do with how Racket&#39;s optimizer works and how the low-level stack (here by &quot;low-level&quot; I mean the approximate ones that are coming from a low-level of the implementation as contrasted with the ones that come when the &quot;Debugging&quot; radio button is selected in the language dialog) traces work.</div>
<div><br></div><div style>I can&#39;t explain why you see the source location some times and not other times (I attribute that to the imprecision in the low-level stack traces) but the reason you see something has to do with how DrRacket choses show a stack location. It does this by looking at the exception. If it is a syntax error, the location comes with the exception in a nice way and that gets used (technically, it uses exn:srclocs? and associated machinery for this). If not, then it looks for a stack that comes from the errortrace library (this is what gets lost when you turn off debugging); if that stack is present, it takes the first element of it. That&#39;s how you get precise errors, ie in this program:</div>
<div style><br></div><div style>#lang racket</div><div style>(define (f x) (+ 1 (car x)))</div><div style>(f 11)<br></div><div style><br></div><div style>you&#39;ll see highlighting around the car expression directly.</div>
<div style><br></div><div style>If that&#39;s not there, the it uses the built-in stacks, again taking the first one. This would get (probably) get you the function &#39;f&#39; in the above example and, I think, would always get it, if you defeat optimizations by using this program:</div>
<div style><br></div><div style><div>#lang racket</div><div>(define (f x) (+ 1 (car x)))</div><div style>(unless (zero? (random 1)) (set! f 12))</div><div>(f 11)<br></div><div><br></div></div><div style>If none of those are around, you get no source location printed out.</div>
<div style><br></div><div style>Oh, and if the source location that you get from the above is the definitions window, then it does not print out the name of the file; it just puts the stop icon.</div><div style><br></div>
<div style>... I think that&#39;s all the relevant cases, but if you want, most of the code is in error-display-handler/stacktrace in collects/drracket/private/debug.rkt.</div><div style><br></div><div style>hth,</div><div style>
Robby</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 29, 2013 at 8:21 PM, Pierpaolo Bernardi <span dir="ltr">&lt;<a href="mailto:olopierpa@gmail.com" target="_blank">olopierpa@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">AHA! You got it!<br>
<br>
It happens in the tabs which have &#39;No debugging...&#39; checked, and<br>
doesn&#39;t happen otherwise.<br>
<br>
<br>
2013/1/30, Robby Findler &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;:<br>
<div class="HOEnZb"><div class="h5">&gt; What is the &quot;custom&quot; part of the language settings you have on?<br>
&gt;<br>
&gt; Robby<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Jan 29, 2013 at 7:47 PM, Pierpaolo Bernardi<br>
&gt; &lt;<a href="mailto:olopierpa@gmail.com">olopierpa@gmail.com</a>&gt;wrote:<br>
&gt;<br>
&gt;&gt; Update 2: it does not depend on buffer content.<br>
&gt;&gt;<br>
&gt;&gt; I have 9 tab open in this DrRacket. In 5 of them happen the strange<br>
&gt;&gt; message, in 4 of them it doesn&#39;t happen.<br>
&gt;&gt;<br>
&gt;&gt; I tried closing one in which it happened and then reopening the same<br>
&gt;&gt; file in a new tab, and in the new tab it doesn&#39;t happen.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2013/1/30, Robby Findler &lt;<a href="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;:<br>
&gt;&gt; &gt; I don&#39;t see that with this program:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; #lang racket<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (define (integer-&gt;roman n)<br>
&gt;&gt; &gt;   (cond ((not (integer? n))<br>
&gt;&gt; &gt;          (raise-argument-error &#39;integer-&gt;roman &quot;integer?&quot; n))<br>
&gt;&gt; &gt;         ((positive? n)<br>
&gt;&gt; &gt;          (apply string-append n))<br>
&gt;&gt; &gt;         ((negative? n)<br>
&gt;&gt; &gt;          (apply string-append &quot;NEGATIVVS &quot; 1))<br>
&gt;&gt; &gt;         (else<br>
&gt;&gt; &gt;          &quot;NVLLA&quot;)))<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Welcome to DrRacket, version 5.3.2.3--2013-01-29(32529d89/d) [3m].<br>
&gt;&gt; &gt; Language: racket; memory limit: 128 MB.<br>
&gt;&gt; &gt;&gt; (integer-&gt;roman 3.3)<br>
&gt;&gt; &gt; . . integer-&gt;roman: contract violation<br>
&gt;&gt; &gt;   expected: integer?<br>
&gt;&gt; &gt;   given: 3.3<br>
&gt;&gt; &gt;&gt; (integer-&gt;roman 3.3)<br>
&gt;&gt; &gt; . . integer-&gt;roman: contract violation<br>
&gt;&gt; &gt;   expected: integer?<br>
&gt;&gt; &gt;   given: 3.3<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Jan 29, 2013 at 4:33 PM, Pierpaolo Bernardi<br>
&gt;&gt; &gt; &lt;<a href="mailto:olopierpa@gmail.com">olopierpa@gmail.com</a>&gt;wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; If I use raise-argument-error in my functions, like this:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (define (integer-&gt;roman n)<br>
&gt;&gt; &gt;&gt;   (cond ((not (integer? n))<br>
&gt;&gt; &gt;&gt;          (raise-argument-error &#39;integer-&gt;roman &quot;integer?&quot; n))<br>
&gt;&gt; &gt;&gt;         ((positive? n)<br>
&gt;&gt; &gt;&gt;          (apply string-append (positive-integer-&gt;roman n)))<br>
&gt;&gt; &gt;&gt;         ((negative? n)<br>
&gt;&gt; &gt;&gt;          (apply string-append &quot;NEGATIVVS &quot; (positive-integer-&gt;roman (-<br>
&gt;&gt; &gt;&gt; n))))<br>
&gt;&gt; &gt;&gt;         (else<br>
&gt;&gt; &gt;&gt;          &quot;NVLLA&quot;)))<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I get errors like this:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Welcome to DrRacket, version 5.3.2.2--2013-01-26(88404f3/a) [3m].<br>
&gt;&gt; &gt;&gt; Language: racket [custom].<br>
&gt;&gt; &gt;&gt; &gt; (integer-&gt;roman 3.3)<br>
&gt;&gt; &gt;&gt; integer-&gt;roman: contract violation<br>
&gt;&gt; &gt;&gt;   expected: integer?<br>
&gt;&gt; &gt;&gt;   given: 3.3<br>
&gt;&gt; &gt;&gt; &gt; (integer-&gt;roman 3.3)<br>
&gt;&gt; &gt;&gt; . . C:\Program<br>
&gt;&gt; &gt;&gt; Files\Racket-Full-5.3.2.2\collects\racket\private\more-scheme.rkt:263:2:<br>
&gt;&gt; &gt;&gt; integer-&gt;roman: contract violation<br>
&gt;&gt; &gt;&gt;   expected: integer?<br>
&gt;&gt; &gt;&gt;   given: 3.3<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; That is, from the second time on I get the extraneous prefix.  Is this<br>
&gt;&gt; &gt;&gt; expected?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; P.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _________________________<br>
&gt;&gt; &gt;&gt;   Racket Developers list:<br>
&gt;&gt; &gt;&gt;   <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Inviato dal mio dispositivo mobile<br>
&gt;&gt;<br>
&gt;<br>
<br>
--<br>
Inviato dal mio dispositivo mobile<br>
</div></div></blockquote></div><br></div>