[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xsmith-dev] xsmith-dev Digest, Vol 4, Issue 4

Hi Professor Eide,

William already helps me solved the problem and everything works great now.
I also turn off the `digest mode`, thanks for the reminder.


From: xsmith-dev-bounces@flux.utah.edu <xsmith-dev-bounces@flux.utah.edu> on behalf of xsmith-dev-request@flux.utah.edu <xsmith-dev-request@flux.utah.edu>
Sent: Tuesday, March 24, 2020 12:00 PM
To: xsmith-dev@flux.utah.edu <xsmith-dev@flux.utah.edu>
Subject: xsmith-dev Digest, Vol 4, Issue 4
Send xsmith-dev mailing list submissions to

To subscribe or unsubscribe via the World Wide Web, visit
or, via email, send a message with subject or body 'help' to

You can reach the person managing the list at

When replying, please edit your Subject line so it is more specific
than "Re: Contents of xsmith-dev digest..."

Today's Topics:

   1. Re: [Error 004] After update Racket to the newest version
      (Eric Eide)
   2. Re: xsmith-dev Digest, Vol 4, Issue 2 (Eric Eide)
   3. Examples (Paulo Matos)


Message: 1
Date: Mon, 23 Mar 2020 17:12:41 -0600
From: Eric Eide <eeide@cs.utah.edu>
To: Xsmith Dev Mailing List <xsmith-dev@flux.utah.edu>
Subject: Re: [xsmith-dev] [Error 004] After update Racket to the
        newest  version
Message-ID: <m1mu86vf6e.fsf_-_@cs.utah.edu>
Content-Type: text/plain

TUO ZHAO <u1129777@utah.edu> writes:

> Here is what I did:
> 1) `wget https://mirror.racket-lang.org/installers/7.6/racket-7.6-x86_64-linux.sh`
> 2) `chmod +x racket-7.6-x86_64-linux.sh`
> 3) `./racket-7.6-x86_64-linux.sh`, select all default settings, and for emulab I change the path to
> `./racket` which is the current directory I'm in
> 4) Then I added `racket/bin` to PATH so that I could call `racket`
> 5) Then I clone the latest XSmith: `git clone https://gitlab.flux.utah.edu/xsmith/xsmith.git`
> 6) `cd xsmith` and `make`
> After all those steps, I run the example and get error.  I attached more
> details output with this email, as well as the example I run (which I just
> copied from the XSmith doc
> (https://docs.racket-lang.org/xsmith/index.html#%28part._.Minimal_.Example%29).

The problem, likely, is another version mismatch :-(.

  * You are using the current version of Xsmith from git.
  * You are reading the documentation from the "public release" version of

Xsmith has changed enough since the last public release that the documenation
for the public-release version isn't right for the git version.

To find the documenation for the git version Xsmith, install Xsmith (your step
6) on your system.  Then go to a shell and type:

  raco docs

This should open a web browser window/tab.  Scroll down to find "Xsmith" and
click on it.

Once you do that, you'll see that the example program has changed!  Try running
that example program.  Does it work for you?

Thanks ---


Eric Eide <eeide@cs.utah.edu>  .         University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX


Message: 2
Date: Mon, 23 Mar 2020 17:15:53 -0600
From: Eric Eide <eeide@cs.utah.edu>
To: Xsmith Dev Mailing List <xsmith-dev@flux.utah.edu>
Subject: Re: [xsmith-dev] xsmith-dev Digest, Vol 4, Issue 2
Message-ID: <m1imiuvf12.fsf@cs.utah.edu>
Content-Type: text/plain

Also, FWIW, I would suggest not subscribing to the xsmith-dev mailing list in
"digest mode."

You will receive email answers a little more quickly --- and email threads will
make more sense --- if you subscribe in non-digest mode.

Happy hacking! ---


Eric Eide <eeide@cs.utah.edu>  .         University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX


Message: 3
Date: Tue, 24 Mar 2020 15:50:06 +0100
From: Paulo Matos <pmatos@linki.tools>
To: Xsmith Dev Mailing List <xsmith-dev@flux.utah.edu>
Subject: [xsmith-dev] Examples
Message-ID: <878sjp7qox.fsf@linki.tools>
Content-Type: text/plain


I am playing with XSmith to try to create a simple fuzzer for a simple
scheme. Initially I thought I would go for r7rs but I can see it's not
as straightforward as I initially thought.

Of course, with the schemely example things were going to be much quick
but not only I cannot run the schemely example, I get:

$ raco make schemely.rkt
/home/pmatos/dev/xsmith/xsmith-examples/schemely/schemely.rkt:219.0: define-generic-type: expected identifier
  at: (type covariant)
  in: (define-generic-type list-type ((type covariant)))
  compilation context...:
   .../private/runtime-report.rkt:731:0: error/report
   .../private/runtime-report.rkt:28:0: call-current-failure-handler
   [repeats 37 more times]

My example stands as:

#lang racket/base

(require xsmith

;; XSMITH-based fuzzer for R7RS - following Rattle's
;; support for R7RS

(define-spec-component r7rs-core)


 [_expression_ #f ()
             #:prop may-be-generated #f]

 [Let _expression_ ([definitions : Definition * = 0 #;(random 3)]
                  [body : DefinitionContext])
      #:prop strict-child-order? #t]

 [LiteralBool _expression_ ([v = (even? (random 2))])]
 [LiteralNumber _expression_ (v) #:prop may-be-generated #f]
 [LiteralInt LiteralNumber ()]
 [Not _expression_ ([_expression_])]

 [If _expression_ ([test : _expression_] [then : _expression_] [else : _expression_])
     #:prop strict-child-order? #t]

(add-prop r7rs-core fresh
          [LiteralInt (hash 'v (* (random 1000000)
                                  (if (equal? 0 (random 2)) -1 1)))])

;; helper for render-node-info
;(define (->se sym . children-refs)
;  (lambda (n)
;    `(,sym ,@(map (lambda (x) (render-node (ast-child x n)))
;                  children-refs))))
;(define (->se* sym children-ref)
;  (lambda (n)
;    `(,sym ,@(map (lambda (x) (render-node x))
;                  (ast-children (ast-child children-ref n))))))


 [Let (lambda (n) `(let (,@(map (lambda (d) `(,(string->symbol (ast-child 'name d))
                                              ,(render-node (ast-child '_expression_ d))))
                                (ast-children (ast-child 'definitions n))))
                     ,@(render-node (ast-child 'body n))))]

 [LiteralBool (lambda (n) (ast-child 'v n))]
 [LiteralNumber (lambda (n) (ast-child 'v n))])

; r7rs-core
; render-hole-info
; [#f (lambda (h) (list 'HOLE (ast-node-type h)))])

;; Types
(define number (base-type 'number))
(define int (base-type 'int number))
(define bool (base-type 'bool))

(define (type-thunks-for-concretization)
  (list (lambda () int)
        (lambda () bool)))


 [Let [(fresh-type-variable) (lambda (n t)
                               (hash 'body t
                                     'definitions (lambda (c) (fresh-type-variable))))]]

 [LiteralBool [bool (no-child-types)]]
 [LiteralInt [int (no-child-types)]]

 [If [(fresh-type-variable)
      (lambda (n t)
        (hash 'test bool 'then t 'else t))]])


(define (r7rs-generate)
  (parameterize ([current-xsmith-type-constructor-thunks
    (r7rs-generate-ast '_expression_)))

(define (r7rs-format-render forms)
    (lambda ()
      (define (pp x)
        (pretty-print x (current-output-port) 1))
      (for ([form forms])
        (pp form)))))

(module+ main
   #:format-render r7rs-format-render))


but I am getting:
render-node-info: Identifier not defined as a property. in: render-node-info

Can someone provide some hints on how to get this to work? I am not sure
I completely understand why this is happening. `add-prop` is supposed to
add a new property with the name `render-node-info`, so getting that
error is confusing me. Xsmith seems to expect the identifier
`render-node-info` to have been previously marked as a property or
something or the sort.

Kind regards,

Paulo Matos

End of xsmith-dev Digest, Vol 4, Issue 4