unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Illegal instruction in test-unwind on ia64.
@ 2006-12-03 19:07 Rob Browning
  2006-12-04  2:01 ` Rob Browning
  0 siblings, 1 reply; 5+ messages in thread
From: Rob Browning @ 2006-12-03 19:07 UTC (permalink / raw)
  Cc: Thomas Bushnell BSG, 401400, 401400-forwarded


(Please maintain the "401400-forwarded" cc if appropriate.)

I haven't had time to do much more than collect this data, but here's
the problem:

  http://buildd.debian.org/fetch.cgi?pkg=guile-1.8;ver=1.8.1%2B1-4;arch=ia64;stamp=1165032746

See also: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401400

And here's what gdb says when it happens:

(gdb) run
Starting program: /home/rlb/guile/guile-1.8-1.8.1+1/test-suite/standalone/.libs/lt-test-unwind 

Program received signal SIGILL, Illegal instruction.
scm_c_catch (tag=0xc00000000000028a, 
    body=0x6000000000002da8 <_GLOBAL_OFFSET_TABLE_>, 
    body_data=0x80000100000011, handler=0x404, handler_data=0x0, 
    pre_unwind_handler=0xc000000000000288, 
    pre_unwind_handler_data=0x20000000001f6008) at throw.c:211
211     }
(gdb) where
#0  scm_c_catch (tag=0xc00000000000028a, 
    body=0x6000000000002da8 <_GLOBAL_OFFSET_TABLE_>, 
    body_data=0x80000100000011, handler=0x404, handler_data=0x0, 
    pre_unwind_handler=0xc000000000000288, 
    pre_unwind_handler_data=0x20000000001f6008) at throw.c:211
#1  0x2000000000470200 in __printf_fp () from /lib/tls/libc.so.6.1
#2  0x0038719000000000 in ?? ()
#3  0x0000000000000000 in ?? ()

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


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

* Re: Illegal instruction in test-unwind on ia64.
  2006-12-03 19:07 Illegal instruction in test-unwind on ia64 Rob Browning
@ 2006-12-04  2:01 ` Rob Browning
  2006-12-04  4:12   ` Richard Harke
  0 siblings, 1 reply; 5+ messages in thread
From: Rob Browning @ 2006-12-04  2:01 UTC (permalink / raw)
  Cc: Thomas Bushnell BSG, 401400, 401400-forwarded


It looks like test-unwind is failing on this call:

      scm_call_1 (res, SCM_BOOL_F);

-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


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

* Re: Illegal instruction in test-unwind on ia64.
  2006-12-04  2:01 ` Rob Browning
@ 2006-12-04  4:12   ` Richard Harke
  2006-12-04  5:31     ` Rob Browning
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Harke @ 2006-12-04  4:12 UTC (permalink / raw)
  Cc: guile-devel

On Sun December 3 2006 18:01, you wrote:
> It looks like test-unwind is failing on this call:
>
>       scm_call_1 (res, SCM_BOOL_F);
I thought this might be interesting to look at so I
got the sources out of unstable. But when I tried to build
it, I got a different error. Actually a warning treated as error
'returns twice' attribute directive ignored
This was on line 108 of continuations.c Could this be
the compiler version? If so, what version to use?

Richard Harke


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


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

* Re: Illegal instruction in test-unwind on ia64.
  2006-12-04  4:12   ` Richard Harke
@ 2006-12-04  5:31     ` Rob Browning
  2006-12-13  5:08       ` Richard Harke
  0 siblings, 1 reply; 5+ messages in thread
From: Rob Browning @ 2006-12-04  5:31 UTC (permalink / raw)
  Cc: guile-devel

Richard Harke <rharke@earthlink.net> writes:

> I thought this might be interesting to look at so I got the sources
> out of unstable. But when I tried to build it, I got a different
> error. Actually a warning treated as error 'returns twice' attribute
> directive ignored This was on line 108 of continuations.c Could this
> be the compiler version? If so, what version to use?

I'm building in an unstable chroot on an ia64 machine, and there the
compiler is gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-20).

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


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

* Re: Illegal instruction in test-unwind on ia64.
  2006-12-04  5:31     ` Rob Browning
@ 2006-12-13  5:08       ` Richard Harke
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Harke @ 2006-12-13  5:08 UTC (permalink / raw)
  Cc: guile-devel

On Sun December 3 2006 21:31, Rob Browning wrote:
> Richard Harke <rharke@earthlink.net> writes:
> > I thought this might be interesting to look at so I got the sources
> > out of unstable. But when I tried to build it, I got a different
> > error. Actually a warning treated as error 'returns twice' attribute
> > directive ignored This was on line 108 of continuations.c Could this
> > be the compiler version? If so, what version to use?
>
> I'm building in an unstable chroot on an ia64 machine, and there the
> compiler is gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-20).
>
> Thanks
I upgraded gcc which required upgrading the kernel, libc and a
bunch of stuff and now I can reproduce this problem.
Indeed it is in scm_call_1.  This essentially calls apply with
the continuation created in check_cont_body. the continuation
is rejected as illegal and scm_ithrow is called to find a
catch to throw to. But the throw is accomplished by calling
longjmp on the jmp_buf initialized by the call to setjmp
in scm_c_catch. Since scm_c_catch has already exitted,
this is not a valid thing to do. Apparently, for most arch's
the chances of using srewed up data is small and this
usually works. The ia64 has an internal frame value (ar.pfs)
which needs to be saved from proc entry to exit. The compiler usually
puts the value in one of the local registers in the rotating
register set. But these have changed and the value that would be
restored to ar.pfs is not valid causing the illegal inst.

But the key here is that using the jmp_bug after exiting the routine
the called jsetjmp is not proper in any case.

Richard Harke


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


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

end of thread, other threads:[~2006-12-13  5:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-03 19:07 Illegal instruction in test-unwind on ia64 Rob Browning
2006-12-04  2:01 ` Rob Browning
2006-12-04  4:12   ` Richard Harke
2006-12-04  5:31     ` Rob Browning
2006-12-13  5:08       ` Richard Harke

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).