* guile-1.8.1 - problems on AMD64 @ 2006-10-10 6:34 Stanislav Ievlev 2006-10-10 8:23 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Stanislav Ievlev @ 2006-10-10 6:34 UTC (permalink / raw) [-- Attachment #1: Type: text/plain, Size: 1426 bytes --] -- $ guile Backtrace: In unknown file: ?: 130* [syntmp-gen-syntax-1074 #(syntax-object # #) #(syntax-object # #) ... ] ?: 131 (if (syntmp-id?-115 syntmp-e-1110) (let* (#) (let* # #)) ...) ... ?: 132 [call-with-values #<procedure #f ()> #<procedure #f #>] ?: 133 (@call-with-values (producer consumer)) ?: 134* [#<procedure #f ()>] ?: 135* [syntmp-gen-syntax-1074 #(syntax-object # #) #(syntax-object begin #) ...] ?: 136 (if (syntmp-id?-115 syntmp-e-1110) (let* (#) (let* # #)) ...) ... ?: 137 (if # # #) ?: 138* [syntmp-ellipsis?-160 #(syntax-object begin (# # # #))] ?: 139 (and # #) ... ?: 140 [syntmp-free-id=?-138 #(syntax-object begin #) #(syntax-object ... #) ] ?: 141 (and (eq? # #) (eq? # #)) ?: 142* [eq? ... ?: 143* (let* ((syntmp-x-885 syntmp-i-883)) (let* (#) (if # # syntmp-e-886)) ) ?: 144 (let* (#) (if # # syntmp-e-886)) ?: 145* (if # # syntmp-x-885) ?: 146* [syntmp-syntax-object?-101 #(syntax-object begin (# # # #))] ?: 147 (and (vector? syntmp-x-1008) (= (vector-length syntmp-x-1008) 3) ... ) ?: 148* [= ... ?: 149* (vector-length syntmp-x-1008) <unnamed port>: In expression (vector-length syntmp-x-1008): <unnamed port>: Stack overflow -- Previous version I see (1.7.91) was work well. There is also a build log from our build system in attach. -- With best regards Stanislav Ievlev. ALT Linux Team. [-- Attachment #2: build.log.bz2 --] [-- Type: application/x-bzip2, Size: 17010 bytes --] [-- Attachment #3: Type: text/plain, Size: 143 bytes --] _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-10 6:34 guile-1.8.1 - problems on AMD64 Stanislav Ievlev @ 2006-10-10 8:23 ` Ludovic Courtès 2006-10-11 11:01 ` Stanislav Ievlev 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2006-10-10 8:23 UTC (permalink / raw) Cc: guile-devel Hi, Stanislav Ievlev <inger@altlinux.org> writes: > <unnamed port>: In expression (vector-length syntmp-x-1008): > <unnamed port>: Stack overflow Did you compile with `-O0'? If so, make sure you compile at least with `-O1'. Hope this helps, Ludovic. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-10 8:23 ` Ludovic Courtès @ 2006-10-11 11:01 ` Stanislav Ievlev 2006-10-11 20:08 ` Kevin Ryde 2006-10-12 12:58 ` Ludovic Courtès 0 siblings, 2 replies; 12+ messages in thread From: Stanislav Ievlev @ 2006-10-11 11:01 UTC (permalink / raw) On Tue, Oct 10, 2006 at 10:23:31AM +0200, Ludovic Court?s wrote: > Hi, > > Stanislav Ievlev <inger@altlinux.org> writes: > > > <unnamed port>: In expression (vector-length syntmp-x-1008): > > <unnamed port>: Stack overflow > > Did you compile with `-O0'? If so, make sure you compile at least with > `-O1'. You have problems with optimization disabled? However, guile does not build with glibc >=2.4 when -D_FORTIFY_SOURCE=2 is added to CFLAGS: -- i586-alt-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I.. -pthread -pipe -Wall -O2 -march=i586 -mtune=pentium4 -Wall -Wmissing-prototypes -Werror -c async.c -fPIC -DPIC -o .libs/libguile_la-async.o cc1: warnings being treated as errors async.c: In function 'scm_i_queue_async_cell': async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result make[3]: *** [libguile_la-async.lo] Error 1 make[3]: Leaving directory `/usr/src/RPM/BUILD/guile-1.8.1/libguile' -- _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-11 11:01 ` Stanislav Ievlev @ 2006-10-11 20:08 ` Kevin Ryde 2006-10-12 12:58 ` Ludovic Courtès 1 sibling, 0 replies; 12+ messages in thread From: Kevin Ryde @ 2006-10-11 20:08 UTC (permalink / raw) Cc: guile-devel Stanislav Ievlev <inger@altlinux.org> writes: > > You have problems with optimization disabled? We don't, but gcc 4 does :). (Bloated stack usage in the code gcc generates for the guile eval func.) _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-11 11:01 ` Stanislav Ievlev 2006-10-11 20:08 ` Kevin Ryde @ 2006-10-12 12:58 ` Ludovic Courtès 2006-10-13 6:26 ` Stanislav Ievlev 1 sibling, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2006-10-12 12:58 UTC (permalink / raw) Cc: guile-devel Hi, Stanislav Ievlev <inger@altlinux.org> writes: > On Tue, Oct 10, 2006 at 10:23:31AM +0200, Ludovic Court?s wrote: >> Hi, >> >> Stanislav Ievlev <inger@altlinux.org> writes: >> >> > <unnamed port>: In expression (vector-length syntmp-x-1008): >> > <unnamed port>: Stack overflow >> >> Did you compile with `-O0'? If so, make sure you compile at least with >> `-O1'. > You have problems with optimization disabled? Personally, no. ;-) But Guile eats up a lot of stack space when compiled with `-O0', to the point that you can't get to the REPL (with the default stack limit), hence my suggestion to use `-O1'. > However, guile does not build with glibc >=2.4 when -D_FORTIFY_SOURCE=2 is > added to CFLAGS: I was unaware of that flag. Is it documented somewhere? Thanks, Ludovic. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-12 12:58 ` Ludovic Courtès @ 2006-10-13 6:26 ` Stanislav Ievlev 2006-10-13 7:38 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Stanislav Ievlev @ 2006-10-13 6:26 UTC (permalink / raw) Cc: ldv On Thu, Oct 12, 2006 at 02:58:58PM +0200, Ludovic Court?s wrote: > Hi, > > Stanislav Ievlev <inger@altlinux.org> writes: > > > On Tue, Oct 10, 2006 at 10:23:31AM +0200, Ludovic Court?s wrote: > >> Hi, > >> > >> Stanislav Ievlev <inger@altlinux.org> writes: > >> > >> > <unnamed port>: In expression (vector-length syntmp-x-1008): > >> > <unnamed port>: Stack overflow > >> > >> Did you compile with `-O0'? If so, make sure you compile at least with > >> `-O1'. > > You have problems with optimization disabled? > > Personally, no. ;-) But Guile eats up a lot of stack space when > compiled with `-O0', to the point that you can't get to the REPL (with > the default stack limit), hence my suggestion to use `-O1'. > > > However, guile does not build with glibc >=2.4 when -D_FORTIFY_SOURCE=2 is > > added to CFLAGS: > > I was unaware of that flag. Is it documented somewhere? As I understand, this is one of security features from RedHat gcc branch. http://www.redhat.com/magazine/006apr05/features/security/ _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-13 6:26 ` Stanislav Ievlev @ 2006-10-13 7:38 ` Ludovic Courtès 2006-10-14 13:13 ` Neil Jerram 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2006-10-13 7:38 UTC (permalink / raw) Cc: guile-devel, ldv Hi, Stanislav Ievlev <inger@altlinux.org> writes: > As I understand, this is one of security features from RedHat gcc branch. > http://www.redhat.com/magazine/006apr05/features/security/ I see. I found a more technical post on this matter: http://lkml.org/lkml/2005/5/25/46 This looks like a potentially useful tool and we'll probably investigate its results once it's available in the main GCC branch. As for this: async.c: In function 'scm_i_queue_async_cell': async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result I don't really understand what this code does, but I have the feeling that line 250 could be rewritten this way: SCM_SYSCALL ((void)write (sleep_fd, &dummy, 1)); Can somebody familiar with this comment? Thanks, Ludovic. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-13 7:38 ` Ludovic Courtès @ 2006-10-14 13:13 ` Neil Jerram 2006-10-16 6:25 ` Stanislav Ievlev 0 siblings, 1 reply; 12+ messages in thread From: Neil Jerram @ 2006-10-14 13:13 UTC (permalink / raw) Cc: guile-devel, ldv ludovic.courtes@laas.fr (Ludovic Courtès) writes: > As for this: > > async.c: In function 'scm_i_queue_async_cell': > async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result > > I don't really understand what this code does, but I have the feeling > that line 250 could be rewritten this way: > > SCM_SYSCALL ((void)write (sleep_fd, &dummy, 1)); > > Can somebody familiar with this comment? Agreed. Stanislav, can you try this and confirm whether it removes the warning you are getting? Regards, Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-14 13:13 ` Neil Jerram @ 2006-10-16 6:25 ` Stanislav Ievlev 2006-10-16 8:04 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Stanislav Ievlev @ 2006-10-16 6:25 UTC (permalink / raw) Cc: guile-devel, ldv On Sat, Oct 14, 2006 at 02:13:38PM +0100, Neil Jerram wrote: > ludovic.courtes@laas.fr (Ludovic Court?s) writes: > > > As for this: > > > > async.c: In function 'scm_i_queue_async_cell': > > async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result > > > > I don't really understand what this code does, but I have the feeling > > that line 250 could be rewritten this way: > > > > SCM_SYSCALL ((void)write (sleep_fd, &dummy, 1)); > > > > Can somebody familiar with this comment? > > Agreed. Stanislav, can you try this and confirm whether it removes > the warning you are getting? New compiller is a too smart for it ;) -- $ make ... gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I.. -pthread -pipe -Wall -O2 -march=i686 -mtune=pentium4 -Wall -Wmissing-prototypes -Werror -c async.c -fPIC -DPIC -o .libs/libguile_la-async.o cc1: warnings being treated as errors async.c: In function 'scm_i_queue_async_cell': async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result make[1]: *** [libguile_la-async.lo] Ошибка 1 make[1]: Leaving directory `/mnt/archive/RPM/BUILD/guile-1.8.1/libguile' make: *** [all] Ошибка 2 $ grep SCM_SYSCALL async.c SCM_SYSCALL((void)write (sleep_fd, &dummy, 1)); -- I think, you will have to create an explicit tests: -- $ gcc-4.1 -O1 l.c l.c: In function 'main': l.c:6: warning: ignoring return value of 'write', declared with attribute warn_unused_result $ cat l.c #include <unistd.h> int main() { char c; (void)write(1,&c,1); return 0; } $ gcc-4.1 -O1 l0.c $ cat l0.c #include <unistd.h> int main() { char c; if(write(1,&c,1)); return 0; } $ gcc-4.1 -O1 l1.c $ cat l1.c #include <unistd.h> void ignore(int retcode) { } int main() { char c; ignore(write(1,&c,1)); return 0; } The best solution is to create a simple wrapper like this: -- $ gcc -O1 l2.c [stas@stas zzz]$ cat l2.c #include <stdlib.h> #include <unistd.h> #include <error.h> #include <errno.h> #define CHECK_OR_IGNORE(x) if (x) error(EXIT_FAILURE,errno,#x) int main() { char c; CHECK_OR_IGNORE(write(1,&c,1)); return 0; } -- -- With best regards Stanislav Ievlev; _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-16 6:25 ` Stanislav Ievlev @ 2006-10-16 8:04 ` Ludovic Courtès 2006-10-19 18:46 ` Neil Jerram 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2006-10-16 8:04 UTC (permalink / raw) Cc: guile-devel, Neil Jerram, ldv Hi, Stanislav Ievlev <inger@altlinux.org> writes: > On Sat, Oct 14, 2006 at 02:13:38PM +0100, Neil Jerram wrote: >> ludovic.courtes@laas.fr (Ludovic Court?s) writes: >> >> > As for this: >> > >> > async.c: In function 'scm_i_queue_async_cell': >> > async.c:250: warning: ignoring return value of 'write', declared with attribute warn_unused_result >> > >> > I don't really understand what this code does, but I have the feeling >> > that line 250 could be rewritten this way: >> > >> > SCM_SYSCALL ((void)write (sleep_fd, &dummy, 1)); >> > >> > Can somebody familiar with this comment? >> >> Agreed. Stanislav, can you try this and confirm whether it removes >> the warning you are getting? > > New compiller is a too smart for it ;) I guess the point of this `_FORTIFY_SOURCE' thing is to help catch errors related to interactions with the kernel (among others). The idea is that when performing a system call, one _should_ be concerned about its result. In the case of async.c:250, I don't understand whether/how failure of the `write ()' call should be handled. Thanks, Ludovic. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-16 8:04 ` Ludovic Courtès @ 2006-10-19 18:46 ` Neil Jerram 2006-10-21 13:12 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Neil Jerram @ 2006-10-19 18:46 UTC (permalink / raw) Cc: guile-devel, ldv ludovic.courtes@laas.fr (Ludovic Courtès) writes: > I guess the point of this `_FORTIFY_SOURCE' thing is to help catch > errors related to interactions with the kernel (among others). The idea > is that when performing a system call, one _should_ be concerned about > its result. > > In the case of async.c:250, I don't understand whether/how failure of > the `write ()' call should be handled. I think it's writing a byte as an inter-thread signaling mechanism. It's pretty unlikely that a single byte write will be interrupted, but if it is then a retry will be needed, so I think the use of SCM_SYSCALL is correct in principle here. How about this, which is more similarly to the other uses of SCM_SYSCALL in the code? SCM_SYSCALL (rv = write (sleep_fd, &dummy, 1)); (Whole patch is below.) Regards, Neil Index: async.c =================================================================== RCS file: /cvsroot/guile/guile/guile-core/libguile/async.c,v retrieving revision 1.86 diff -u -r1.86 async.c --- async.c 17 Apr 2006 00:05:37 -0000 1.86 +++ async.c 19 Oct 2006 18:46:32 -0000 @@ -241,13 +241,14 @@ if (sleep_fd >= 0) { char dummy = 0; + int rv; /* Likewise, T might already been done with sleeping here, but interrupting it once too often does no harm. T might also not yet have started sleeping, but this is no problem either since the data written to a pipe will not be lost, unlike a condition variable signal. */ - write (sleep_fd, &dummy, 1); + SCM_SYSCALL (rv = write (sleep_fd, &dummy, 1)); } /* This is needed to protect sleep_mutex. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: guile-1.8.1 - problems on AMD64 2006-10-19 18:46 ` Neil Jerram @ 2006-10-21 13:12 ` Ludovic Courtès 0 siblings, 0 replies; 12+ messages in thread From: Ludovic Courtès @ 2006-10-21 13:12 UTC (permalink / raw) Cc: guile-devel, ldv Hi, Neil Jerram <neil@ossau.uklinux.net> writes: > I think it's writing a byte as an inter-thread signaling mechanism. > It's pretty unlikely that a single byte write will be interrupted, but > if it is then a retry will be needed, so I think the use of > SCM_SYSCALL is correct in principle here. Ok. > How about this, which is more similarly to the other uses of > SCM_SYSCALL in the code? > > SCM_SYSCALL (rv = write (sleep_fd, &dummy, 1)); Looks good. How about also checking whether RV is actually equal to 1 then (and loop if it's lower than 1)? (I know it is unlikely that RV will be different from 1 but the API specification leaves this possibility open and it's certainly not impossible.) Thanks, Ludovic. _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2006-10-21 13:12 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-10-10 6:34 guile-1.8.1 - problems on AMD64 Stanislav Ievlev 2006-10-10 8:23 ` Ludovic Courtès 2006-10-11 11:01 ` Stanislav Ievlev 2006-10-11 20:08 ` Kevin Ryde 2006-10-12 12:58 ` Ludovic Courtès 2006-10-13 6:26 ` Stanislav Ievlev 2006-10-13 7:38 ` Ludovic Courtès 2006-10-14 13:13 ` Neil Jerram 2006-10-16 6:25 ` Stanislav Ievlev 2006-10-16 8:04 ` Ludovic Courtès 2006-10-19 18:46 ` Neil Jerram 2006-10-21 13:12 ` Ludovic Courtès
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).