I'm not sure, but he problem was related to a kind of GC on binding information 
when marshaling. It probably crashed only for some traversal orders, and maybe 
something like `eq?` hashing affected the order.



> On Jul 23, 2015, at 11:16 AM, Stephen Chang <[email protected]> wrote:
> 
> Thanks! Is there a quick explanation for why it was only crashing
> intermittently?
> 
>> On Thu, Jul 23, 2015 at 10:50 AM, Matthew Flatt <[email protected]> wrote:
>> Thanks! Repair pushed.
>> 
>> At Wed, 22 Jul 2015 15:35:37 -0400, Stephen Chang wrote:
>>> Here is another seg faulting example.
>>> 
>>> example3a.rkt:
>>> 
>>> #lang racket
>>> (require (for-syntax syntax/parse))
>>> (provide test)
>>> (define-syntax test
>>>  (syntax-parser
>>>    [_
>>>     #:with lam+
>>>     (local-expand
>>>      #'(λ (z) (let-syntax ([z (make-rename-transformer #'z)]) z))
>>>      'expression null)
>>>     #'(define-syntax x #'lam+)]))
>>> (test)
>>> 
>>> example3b.rkt:
>>> 
>>> #lang racket
>>> (require "example3a.rkt")
>>> 
>>> To reproduce:
>>> 1) Open example3b.rkt in drracket and run. It may or may not crash
>>> with a seg fault.
>>> 2) Delete compiled directory and run again.
>>> 
>>> Observations:
>>> - A crash typically occurs after repeating the steps 2-3 times but
>>> sometimes I have to run-and-compile 5 or more times.
>>> - The provide appears to be necessary to cause the crash, even though
>>> it's unused in the second file.
>>> - I'm not sure which parts of the macro are actually needed to create
>>> the crash but the local-expand and define-syntax seem to be involved.
>>> 
>>> 
>>> On Tue, Jul 21, 2015 at 3:39 PM, Stephen Chang <[email protected]> wrote:
>>>>> Repair pushed. The problem was related to the bytecode format, so I
>>>>> had to bump the version number.
>>>> 
>>>> Ah ok. This makes sense because I occasionally could not reproduce the
>>>> crash unless I forced a recompile. Sorry, I should have mentioned this
>>>> initially. Thanks.
>>>> 
>>>>> 
>>>>> Thanks!
>>>>> 
>>>>> At Tue, 21 Jul 2015 13:27:14 -0400, Stephen Chang wrote:
>>>>>> The previous example now works. Thanks.
>>>>>> 
>>>>>> But here is a variation that still seg faults:
>>>>>> 
>>>>>> file1.rkt:
>>>>>> 
>>>>>> #lang racket
>>>>>> (require (for-syntax syntax/parse))
>>>>>> (provide (rename-out [my-define define]))
>>>>>> (define-syntax my-define
>>>>>>  (syntax-parser
>>>>>>    [(_ x:id e)
>>>>>>     ;; undef is unbound identifier
>>>>>>     #:with y (local-expand #'undef 'expression null)
>>>>>>     #'(void)]))
>>>>>> 
>>>>>> ; (my-define X 1) produces: "undef: unbound identifier in module in: 
>>>>>> undef"
>>>>>> 
>>>>>> file2.rkt
>>>>>> 
>>>>>> #lang racket
>>>>>> (require "file1.rkt")
>>>>>> (define X 1)
>>>>>> 
>>>>>> Running file2.rkt in drracket with the new expander crashes drracket 
>>>>>> with:
>>>>>> 
>>>>>> SIGSEGV MAPERR si_code 1 fault on addr 0x20
>>>>>> Aborted
>>>>>> 
>>>>>>> On Mon, Jul 20, 2015 at 3:49 PM, Matthew Flatt <[email protected]> 
>>>>>>> wrote:
>>>>>>> I've just pushed a repair for this bug. Thanks for the report!
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> On Jul 20, 2015, at 12:47 PM, Stephen Chang <[email protected]> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> The following code produces a seg fault with the new expander (today's
>>>>>>>> build) in the scenario described below:
>>>>>>>> 
>>>>>>>> file1.rkt:
>>>>>>>> 
>>>>>>>> #lang racket
>>>>>>>> (require (for-syntax syntax/parse))
>>>>>>>> 
>>>>>>>> (define-syntax (define-constructor stx)
>>>>>>>> (syntax-parse stx
>>>>>>>>   [(_ X:id)
>>>>>>>>    #'(define-syntax X
>>>>>>>>        (syntax-parser
>>>>>>>>          [(_ x (... ...)) #'(void x (... ...))]))]))
>>>>>>>> 
>>>>>>>> (define-constructor C)
>>>>>>>> 
>>>>>>>> (define-syntax define-alias
>>>>>>>> (syntax-parser
>>>>>>>>   [(_ alias:id e)
>>>>>>>>    #:with e+ (local-expand #'e 'expression null)
>>>>>>>>    #'(define-syntax alias
>>>>>>>>        (syntax-parser [x:id #'e+]))]))
>>>>>>>> 
>>>>>>>> (define-alias D (C 1))
>>>>>>>> 
>>>>>>>> file2.rkt:
>>>>>>>> (require "file1.rkt")
>>>>>>>> 
>>>>>>>> A few notes:
>>>>>>>> - running file2.rkt in DrRacket with the new expander crashes drracket
>>>>>>>> with the error:
>>>>>>>> 
>>>>>>>> SIGSEGV MAPERR si_code 1 fault on addr (nil)
>>>>>>>> Aborted
>>>>>>>> 
>>>>>>>> - running file2.rkt with racket (new expander) produces no error
>>>>>>>> - running file2.rkt produced no error with the old expander
>>>>>>>> - running file1.rkt with either racket or drracket, new expander or
>>>>>>>> old expander, produces no error
>>>>>>>> 
>>>>>>>> I'm not completely caught up with the new expander threads so
>>>>>>>> apologies in advance if someone has already raised this issue.
>>>>>>>> 
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>> Groups
>>>>>> "Racket Developers" 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].
>>>>>>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/racket-dev/CAFfiA1LDBwHox-1iP9UdDQOKSLMU-TbhU
>>>>>> Vtbsd-TLrNNO0eB_g%40mail.gmail.com.
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Racket Developers" 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].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-dev/20150723145046.4AD8D6501DD%40mail-svr1.cs.utah.edu.
>> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Developers" 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].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-dev/CAFfiA1%2BR5qgeLU1ibArgoJLe8GQysm6MgY1-%3DtEVA9Mrfb2prQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/48AB8632-177B-409B-BC76-9EDD1FDC6240%40cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to