unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#24005: Segfault after playing around a bit
@ 2016-07-16 11:46 Giedrius Statkevičius
  2016-07-23 10:45 ` Andy Wingo
  0 siblings, 1 reply; 2+ messages in thread
From: Giedrius Statkevičius @ 2016-07-16 11:46 UTC (permalink / raw)
  To: 24005

Basically I've been playing around with guile and trying to do a SICP
exercise:

diablo@tyrael:~/ > guile
GNU Guile 2.0.11
Copyright (C) 1995-2014 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> (define (improve guess x) (average guess (/ x guess)))
;;; <stdin>:1:26: warning: possibly unbound variable `average'
scheme@(guile-user)> (define (average x y) (/ (+ x y) 2))
scheme@(guile-user)> (define (improve guess x) (average guess (/ x guess)))
scheme@(guile-user)> (define (good-enough? guess x) (< (abs (- (square guess)
x)) 0.001))
;;; <stdin>:4:42: warning: possibly unbound variable `square'
scheme@(guile-user)> (define (sqrt x) (sqrt-iter 1.0 x))
;;; <stdin>:5:17: warning: possibly unbound variable `sqrt-iter'
scheme@(guile-user)> (define (square x) (* x x))
scheme@(guile-user)> (define (sqrt-iter guess x) (if (good-enough? guess x)
guess (sqrt-iter (improve guess x) x)))
scheme@(guile-user)> (sqrt 2)
$1 = 1.4142156862745097
scheme@(guile-user)> (sqrt 9)
$2 = 3.00009155413138
scheme@(guile-user)> (define (new-if predicate then-clause else-clause) (cond
(predicate then-clause)
(else else-clause)))
scheme@(guile-user)> (new-if (> 2 1) (sqrt 2) (sqrt 3))
$3 = 1.4142156862745097
scheme@(guile-user)> (define (sqrt-iter guess x) (new-if (good-enough? guess x)
guess (sqrt-iter (improve guess x) x)))
scheme@(guile-user)> (sqrt 2)
<unnamed port>:4:42: In procedure good-enough?:
<unnamed port>:4:42: Throw to key `vm-error' with args `(vm-run "VM: Stack
overflow" ())'.

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> (define (sqrt-iter guess x) (new-if (good-enough? guess
x) guess x))
zsh: abort (core dumped)  guile

Stack traces:
                Stack trace of thread 31457:
                #0  0x00007f13299c0295 raise (libc.so.6)
                #1  0x00007f13299c16da abort (libc.so.6)
                #2  0x00007f132a02b128 n/a (libguile-2.0.so.22)
                #3  0x00007f132a02c0dd n/a (libguile-2.0.so.22)
                #4  0x00007f132a042968 scm_call_with_vm (libguile-2.0.so.22)
                #5  0x00007f132a02a9bb n/a (libguile-2.0.so.22)
                #6  0x00007f132a02b123 n/a (libguile-2.0.so.22)
                #7  0x00007f132a02c0dd n/a (libguile-2.0.so.22)
                #8  0x00007f1329faf023 scm_primitive_eval (libguile-2.0.so.22)
                #9  0x00007f1329faf083 scm_eval (libguile-2.0.so.22)
                #10 0x00007f132a0032c0 scm_shell (libguile-2.0.so.22)
                #11 0x00007f1329fcc3dd n/a (libguile-2.0.so.22)
                #12 0x00007f1329fa4caa n/a (libguile-2.0.so.22)
                #13 0x00007f132a0423b2 n/a (libguile-2.0.so.22)
                #14 0x00007f1329faea73 scm_call_4 (libguile-2.0.so.22)
                #15 0x00007f1329fa5451 n/a (libguile-2.0.so.22)
                #16 0x00007f1329fa5535 scm_c_with_continuation_barrier (libguile-2.0.so.22)
                #17 0x00007f132a0251dc n/a (libguile-2.0.so.22)
                #18 0x00007f1329738832 GC_call_with_stack_base (libgc.so.1)
                #19 0x00007f132a025608 scm_with_guile (libguile-2.0.so.22)
                #20 0x00007f1329fcc5b5 scm_boot_guile (libguile-2.0.so.22)
                #21 0x0000000000400c20 n/a (guile)
                #22 0x00007f13299ad741 __libc_start_main (libc.so.6)
                #23 0x0000000000400ca9 n/a (guile)

                Stack trace of thread 31461:
                #0  0x00007f1329d3e16d read (libpthread.so.0)
                #1  0x00007f132a001ea7 n/a (libguile-2.0.so.22)
                #2  0x00007f132973e7e2 n/a (libgc.so.1)
                #3  0x00007f13297329cf n/a (libgc.so.1)
                #4  0x00007f132973888c GC_do_blocking (libgc.so.1)
                #5  0x00007f132a02569a scm_without_guile (libguile-2.0.so.22)
                #6  0x00007f132a001df3 n/a (libguile-2.0.so.22)
                #7  0x00007f132a03880e n/a (libguile-2.0.so.22)
                #8  0x00007f1329faea0e scm_call_3 (libguile-2.0.so.22)
                #9  0x00007f132a027bfe scm_internal_catch (libguile-2.0.so.22)
                #10 0x00007f132a025b3c n/a (libguile-2.0.so.22)
                #11 0x00007f1329fa4caa n/a (libguile-2.0.so.22)
                #12 0x00007f132a03880e n/a (libguile-2.0.so.22)
                #13 0x00007f1329faea73 scm_call_4 (libguile-2.0.so.22)
                #14 0x00007f1329fa5451 n/a (libguile-2.0.so.22)
                #15 0x00007f1329fa5535 scm_c_with_continuation_barrier (libguile-2.0.so.22)
                #16 0x00007f132a0251dc n/a (libguile-2.0.so.22)
                #17 0x00007f1329738832 GC_call_with_stack_base (libgc.so.1)
                #18 0x00007f132a024bdc n/a (libguile-2.0.so.22)
                #19 0x00007f132973d976 n/a (libgc.so.1)
                #20 0x00007f1329738832 GC_call_with_stack_base (libgc.so.1)
                #21 0x00007f1329d35484 start_thread (libpthread.so.0)
                #22 0x00007f1329a746dd __clone (libc.so.6)

                Stack trace of thread 31458:
                #0  0x00007f1329d3b0af pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007f132973f867 n/a (libgc.so.1)
                #2  0x00007f132973570a n/a (libgc.so.1)
                #3  0x00007f132973da5f n/a (libgc.so.1)
                #4  0x00007f1329d35484 start_thread (libpthread.so.0)
                #5  0x00007f1329a746dd __clone (libc.so.6)

                Stack trace of thread 31459:
                #0  0x00007f1329d3b0af pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007f132973f867 n/a (libgc.so.1)
                #2  0x00007f132973570a n/a (libgc.so.1)
                #3  0x00007f132973da5f n/a (libgc.so.1)
                #4  0x00007f1329d35484 start_thread (libpthread.so.0)
                #5  0x00007f1329a746dd __clone (libc.so.6)

                Stack trace of thread 31460:
                #0  0x00007f1329d3b0af pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0)
                #1  0x00007f132973f867 n/a (libgc.so.1)
                #2  0x00007f132973570a n/a (libgc.so.1)
                #3  0x00007f132973da5f n/a (libgc.so.1)
                #4  0x00007f1329d35484 start_thread (libpthread.so.0)
                #5  0x00007f1329a746dd __clone (libc.so.6)

So it seems to me like guile doesn't handle stack overflows gracefully and just
crashes but I'm not sure.

diablo@tyrael:~/ > guile --version
guile (GNU Guile) 2.0.11
Copyright (C) 2014 Free Software Foundation, Inc.

License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

-- 
        Giedrius





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-07-23 10:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-16 11:46 bug#24005: Segfault after playing around a bit Giedrius Statkevičius
2016-07-23 10:45 ` Andy Wingo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).