I get the same error too if I run your attached program and just click on
the "All" and "None" buttons a few times. The problem seems to be with
doing GUI container operations that take a long time (adding the message%
objects) inside an event callback. To work around this, you can use
queue-callback, that is, replace the code that calls `show-selected-columns`
(when changed
(show-selected-columns)))
with
(when changed
(queue-callback (lambda () (show-selected-columns)))
I also think it might be worth reporting this as a bug in the GitHub
racket/gui project.
Regards,
Alex.
On Monday, October 15, 2018 at 3:50:20 AM UTC+8, Dan Muller wrote:
>
> DrRacket 7, running on Windows 10 version 1803
>
> I've been working on a GUI program that needs to show a table of data, the
> columns of which change according to checkbox selections. The checkboxes
> are arranged in several groups, each of which has "All" and "None" buttons
> to allow quick checking and clearing of all buttons in that group.
>
> If I stress the program a bit by punching checkboxes and buttons more or
> less randomly, it eventually fails.
> I was able to come up with a smaller program that exhibits the same
> behavior. I've attached it to this message.
>
> Running it from the command line with errortrace gives the most
> information.
>
> $ racket -l errortrace -t failure.rkt
> ptr-ref: contract violation
> expected: (and/c cpointer? (not/c (lambda (p) (pointer-equal? p #f))))
> given: #f
> argument position: 1st
> other arguments...:
> #<ctype:scheme>
> errortrace...:
> C:\Users\danm\Documents\Racket\NMSRecipes\failure.rkt:124:6: (new
> message% (parent column) (label (number->string item)))
> C:\Users\danm\Documents\Racket\NMSRecipes\failure.rkt:123:4: (for
> ((item column-data)) (new message% (parent column) (label (number->string
> ....))))
> C:\Users\danm\Documents\Racket\NMSRecipes\failure.rkt:130:4:
> (make-column (format "Column ~a" i) (list-ref column-data i))
> C:\Users\danm\Documents\Racket\NMSRecipes\failure.rkt:129:2: (for ((i
> selected-indexes)) (make-column (format "Column ~a" i) (list-ref
> column-data i)))
>
> Sometimes it can take a while to get the error; it's quite random.
>
> I'm usually running it in DrRacket, but I've also tried it as a standalone
> executable, with the same result.
>
> The DrRacket IDE isn't quite right after this happens, either. The program
> will fail (with the same error) immediately, if I can even restart it.
> Sometimes a separate black window opens, showing a similar error. The IDE
> usually cannot be exited normally. Most of the text editing functions still
> work, though.
>
> Suggestions for workarounds are welcome. I'd be happy to open an issue on
> GitHub, but wanted to first get opinions on whether there's something wrong
> with my code.
> Also, I'm not sure which of the Racket projects it rightly belongs to,
> since the error reporting doesn't usefully refer to anything outside of my
> own code.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.