GNU bug report logs - #9926
make GC_MAKE_GCPROS_NOOPS the default

Previous Next

Package: emacs;

Reported by: monnier <at> IRO.UMontreal.CA

Date: Mon, 31 Oct 2011 22:58:02 UTC

Severity: wishlist

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 9926 in the body.
You can then email your comments to 9926 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Mon, 31 Oct 2011 22:58:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Svante Signell <srs <at> kth.se>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 31 Oct 2011 22:58:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Svante Signell <srs <at> kth.se>
To: bug-gnu-emacs <at> gnu.org
Subject: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Mon, 31 Oct 2011 23:54:31 +0100
Hello,

Interesting to see that emacs-24.1 is on its way with many new features.
When trying to compile the latest pre-release under GNU/Hurd, the build
fails due to a missing definition in src/gnu.h. Inlined is a patch to
add the proper definition of GC_MARK_STACK (as on many of the other
architectures). Otherwise the global variable: static Lisp_Object Vdead;
is undefined on line 6264: if (!EQ (obj, Vdead)) in function
which_symbols().

Thanks!

--- emacs-24.0.91/src/s/gnu.h~  2011-10-14 02:40:36.000000000 +0200
+++ emacs-24.0.91/src/s/gnu.h   2011-10-31 23:28:48.000000000 +0100
@@ -44,3 +44,5 @@
 #endif /* !_IO_STDIO_H */
 #endif /* emacs */
 
+/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
stack.  */
+#define GC_MARK_STACK   GC_MAKE_GCPROS_NOOPS






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 01 Nov 2011 17:46:01 GMT) Full text and rfc822 format available.

Message #8 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Svante Signell <srs <at> kth.se>
Cc: 9926 <at> debbugs.gnu.org
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 01 Nov 2011 13:42:54 -0400
> Interesting to see that emacs-24.1 is on its way with many new features.
> When trying to compile the latest pre-release under GNU/Hurd, the build
> fails due to a missing definition in src/gnu.h. Inlined is a patch to
> add the proper definition of GC_MARK_STACK (as on many of the other
> architectures). Otherwise the global variable: static Lisp_Object Vdead;
> is undefined on line 6264: if (!EQ (obj, Vdead)) in function
> which_symbols().

Actually GC_MAKE_GCPROS_NOOPS should be made the default, and the build
should succeed even if GC_MARK_STACK is not set to GC_MAKE_GCPROS_NOOPS.
So the bug is in the which_symbols code.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Mon, 07 Nov 2011 05:47:01 GMT) Full text and rfc822 format available.

Message #11 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: 9926 <at> debbugs.gnu.org
Subject: Re: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Sun, 06 Nov 2011 21:43:31 -0800
I installed the following patch in the trunk as bzr 106311
to fix the fails-to-compile bug.

Making GC_MAKE_GCPROS_NOOPS the default sounds good, but as
it doesn't fix a bug and we're in feature-freeze now I left
that for later.

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-07 02:00:43 +0000
+++ src/ChangeLog	2011-11-07 05:37:49 +0000
@@ -1,3 +1,10 @@
+2011-11-07  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	* alloc.c (DEADP): New macro, for porting to GNU/Hurd (Bug#9926).
+	This is also needed for porting to any host where GC_MARK_STACK is
+	not GC_MAKE_GCPROS_NOOPS.
+	(which_symbols): Use it.
+
 2011-11-07  Kenichi Handa  <handa <at> m17n.org>
 
 	* coding.c (coding_set_destination): Check coding->src_pos only

=== modified file 'src/alloc.c'
--- src/alloc.c	2011-10-29 17:25:44 +0000
+++ src/alloc.c	2011-11-07 05:37:49 +0000
@@ -315,6 +315,7 @@
    on free lists recognizable in O(1).  */
 
 static Lisp_Object Vdead;
+#define DEADP(x) EQ (x, Vdead)
 
 #ifdef GC_MALLOC_CHECK
 
@@ -411,6 +412,10 @@
 
 #endif /* GC_MARK_STACK || GC_MALLOC_CHECK */
 
+#ifndef DEADP
+# define DEADP(x) 0
+#endif
+
 /* Recording what needs to be marked for gc.  */
 
 struct gcpro *gcprolist;
@@ -6261,7 +6266,7 @@
    int gc_count = inhibit_garbage_collection ();
    Lisp_Object found = Qnil;
 
-   if (!EQ (obj, Vdead))
+   if (! DEADP (obj))
      {
        for (sblk = symbol_block; sblk; sblk = sblk->next)
 	 {





Changed bug title to 'make GC_MAKE_GCPROS_NOOPS the default' from 'patch: emacs-24.0.91 FTBFS on GNU/Hurd' Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 07 Nov 2011 17:18:01 GMT) Full text and rfc822 format available.

Severity set to 'wishlist' from 'important' Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 07 Nov 2011 17:18:01 GMT) Full text and rfc822 format available.

Changed bug submitter to 'monnier <at> IRO.UMontreal.CA' from 'Svante Signell <srs <at> kth.se>' Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Mon, 07 Nov 2011 17:18:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 12:25:02 GMT) Full text and rfc822 format available.

Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Svante Signell <srs <at> kth.se>
To: bug-gnu-emacs <at> gnu.org
Cc: eggert <at> cs.ucla.edu
Subject: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 13:21:43 +0100
> I installed the following patch in the trunk as bzr 106311
> to fix the fails-to-compile bug.
> 
> Making GC_MAKE_GCPROS_NOOPS the default sounds good, but as
> it doesn't fix a bug and we're in feature-freeze now I left
> that for later.
> 
> === modified file 'src/ChangeLog'
> --- src/ChangeLog       2011-11-07 02:00:43 +0000
> +++ src/ChangeLog       2011-11-07 05:37:49 +0000
> @@ -1,3 +1,10 @@
> +2011-11-07  Paul Eggert  <address <at> hidden>
> +
> +       * alloc.c (DEADP): New macro, for porting to GNU/Hurd (Bug#9926).
> +       This is also needed for porting to any host where GC_MARK_STACK is
> +       not GC_MAKE_GCPROS_NOOPS.
> +       (which_symbols): Use it.

Reading your patch shows that GC_MARK_STACK will still not be set for
GNU/Hurd. However, the previous comment by Stefan Monnier says that
GC_MAKE_GCPROS_NOOPS should be set as the default. So what is wrong
with patching gnu.h??

Anyway, which are the differences/consequences of that part of the code
in which_symbols being executed compared to not when GC_MARK_STACK is
unset or set to GC_MAKE_GCPROS_NOOPS?





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 13:35:01 GMT) Full text and rfc822 format available.

Message #23 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: srs <at> kth.se
Cc: eggert <at> cs.ucla.edu, 9926 <at> debbugs.gnu.org
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 08:31:47 -0500
> Anyway, which are the differences/consequences of that part of the code
> in which_symbols being executed compared to not when GC_MARK_STACK is
> unset or set to GC_MAKE_GCPROS_NOOPS?

They don't matter: which_symbols is a function only for use from
a C debugger: there is no call to this function within Emacs itself.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 16:48:01 GMT) Full text and rfc822 format available.

Message #26 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: srs <at> kth.se
Cc: 9926 <at> debbugs.gnu.org
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 08:44:21 -0800
On 11/08/11 04:21, Svante Signell wrote:
> the previous comment by Stefan Monnier says that
> GC_MAKE_GCPROS_NOOPS should be set as the default. So what is wrong
> with patching gnu.h??

I don't see anything wrong with changing Emacs to use GC_MAKE_GCPROS_NOOPS
on GNU/Hurd.  If there's no objection I would like to install the change
suggested by Stefan, which should have the same effect as patching gnu.h
but results in cleaner code internally.  Please see the patch below.

> Anyway, which are the differences/consequences of that part of the code
> in which_symbols being executed compared to not when GC_MARK_STACK is
> unset or set to GC_MAKE_GCPROS_NOOPS?

As Stefan wrote, which_symbols is executed only if you run Emacs under
a debugger and execute it yourself.  And in that case, the new DEADP
macro should do the right thing, regardless of what GC_MARK_STACK is set
or unset to.

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-08 07:25:56 +0000
+++ src/ChangeLog	2011-11-08 16:36:16 +0000
@@ -1,3 +1,15 @@
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Set GC_MARK_STACK to GC_MAKE_GCPROS_NOOPS on GNU/Hurd (Bug#9926).
+	* lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS.
+	* s/cygwin.h, s/darwin.h, s/freebsd.h, s/irix6-5.h, s/msdos.h:
+	* s/netbsd.h, s/sol2-6.h:
+	Remove definition of GC_MARK_STACK, since the default now works.
+	* s/aix4-2.h, s/hpux10-20.h, s/ms-w32.h, s/unixware.h:
+	Define GC_MARK_STACK to GC_USE_GCPROS_AS_BEFORE, since that's
+	no longer the default.
+	* s/gnu-linux.h (GC_MARK_STACK): Adjust to change in default.
+
 2011-11-08  Chong Yidong  <cyd <at> gnu.org>
 
 	* window.c (Fwindow_left_column, Fwindow_top_line): Doc fix.

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-11-07 17:04:01 +0000
+++ src/lisp.h	2011-11-08 16:29:11 +0000
@@ -2213,7 +2213,7 @@
 #define GC_USE_GCPROS_CHECK_ZOMBIES	3
 
 #ifndef GC_MARK_STACK
-#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #endif
 
 /* Whether we do the stack marking manually.  */

=== modified file 'src/s/aix4-2.h'
--- src/s/aix4-2.h	2011-07-07 01:32:56 +0000
+++ src/s/aix4-2.h	2011-11-08 16:29:11 +0000
@@ -75,3 +75,7 @@
    Emacs currently calls xrealloc on the results of get_current_dir name,
    to avoid a crash just use the Emacs implementation for that function.  */
 #define BROKEN_GET_CURRENT_DIR_NAME 1
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE

=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h	2011-03-17 05:15:08 +0000
+++ src/s/cygwin.h	2011-11-08 16:29:11 +0000
@@ -85,12 +85,6 @@
    change their controlling terminal */
 #define vfork fork
 
-/* This should work (at least when compiling with gcc).  But I have no way
-   or intention to verify or even test it.  If you encounter a problem with
-   it, feel free to change this setting, but please add a comment here about
-   why it needed to be changed.  */
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-
 /* Virtual addresses of pure and impure space can vary, as on Windows.  */
 #define VIRT_ADDR_VARIES
 

=== modified file 'src/s/darwin.h'
--- src/s/darwin.h	2011-08-09 22:13:11 +0000
+++ src/s/darwin.h	2011-11-08 16:29:11 +0000
@@ -145,6 +145,3 @@
    It is already a controlling terminal of subprocess, because we did
    ioctl TIOCSCTTY.  */
 #define DONT_REOPEN_PTY
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK   GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/freebsd.h'
--- src/s/freebsd.h	2011-02-16 01:35:20 +0000
+++ src/s/freebsd.h	2011-11-08 16:29:11 +0000
@@ -58,6 +58,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK 	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/gnu-linux.h'
--- src/s/gnu-linux.h	2011-09-09 01:06:52 +0000
+++ src/s/gnu-linux.h	2011-11-08 16:29:11 +0000
@@ -145,7 +145,6 @@
     || defined __arm__ || defined __powerpc__ || defined __amd64__ \
     || defined __ia64__ || defined __sh__
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #ifdef __mc68000__
 #define GC_LISP_OBJECT_ALIGNMENT 2
 #endif
@@ -158,4 +157,6 @@
 		 __builtin_ia64_bsp (), 0);			\
   } while (0)
 #endif
+#else
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
 #endif

=== modified file 'src/s/hpux10-20.h'
--- src/s/hpux10-20.h	2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h	2011-11-08 16:29:11 +0000
@@ -101,6 +101,10 @@
    on HP-UX.  (You get duplicate symbol errors on linking). */
 #undef _FILE_OFFSET_BITS
 
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+
 /* Define VIRT_ADDR_VARIES if the virtual addresses of
    pure and impure space as loaded can vary, and even their
    relative order cannot be relied on.

=== modified file 'src/s/irix6-5.h'
--- src/s/irix6-5.h	2011-07-07 03:24:33 +0000
+++ src/s/irix6-5.h	2011-11-08 16:29:11 +0000
@@ -95,7 +95,6 @@
 
 /* Tested on Irix 6.5.  SCM worked on earlier versions.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 
 
 /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which

=== modified file 'src/s/ms-w32.h'
--- src/s/ms-w32.h	2011-11-05 16:30:13 +0000
+++ src/s/ms-w32.h	2011-11-08 16:29:11 +0000
@@ -402,5 +402,8 @@
 #define DebPrint(stuff)
 #endif
 
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
 
 /* ============================================================ */

=== modified file 'src/s/msdos.h'
--- src/s/msdos.h	2011-02-26 12:55:10 +0000
+++ src/s/msdos.h	2011-11-08 16:29:11 +0000
@@ -137,5 +137,3 @@
 /* Tell the garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-

=== modified file 'src/s/netbsd.h'
--- src/s/netbsd.h	2011-02-16 01:35:20 +0000
+++ src/s/netbsd.h	2011-11-08 16:29:11 +0000
@@ -38,6 +38,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method.  */
-#define GC_MARK_STACK	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/sol2-6.h'
--- src/s/sol2-6.h	2011-04-16 22:06:00 +0000
+++ src/s/sol2-6.h	2011-11-08 16:29:11 +0000
@@ -59,4 +59,3 @@
   }
 
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/unixware.h'
--- src/s/unixware.h	2011-04-16 22:06:00 +0000
+++ src/s/unixware.h	2011-11-08 16:29:11 +0000
@@ -50,3 +50,7 @@
   }
 
 #define	PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 17:26:02 GMT) Full text and rfc822 format available.

Message #29 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 9926 <at> debbugs.gnu.org, srs <at> kth.se
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 19:23:41 +0200
> Date: Tue, 08 Nov 2011 08:44:21 -0800
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> Cc: 9926 <at> debbugs.gnu.org
> 
> --- src/s/ms-w32.h	2011-11-05 16:30:13 +0000
> +++ src/s/ms-w32.h	2011-11-08 16:29:11 +0000
> @@ -402,5 +402,8 @@
>  #define DebPrint(stuff)
>  #endif
>  
> +/* Conservative garbage collection has not been tested, so for now
> +   play it safe and stick with the old-fashioned way of marking.  */
> +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE

Given that nt/config.nt defines this:

/* Enable conservative stack marking for GC.  */
#define GC_MARK_STACK 1

I wonder if the above change for ms-w32.h is TRT.




Reply sent to Paul Eggert <eggert <at> cs.ucla.edu>:
You have taken responsibility. (Tue, 08 Nov 2011 20:19:02 GMT) Full text and rfc822 format available.

Notification sent to monnier <at> IRO.UMontreal.CA:
bug acknowledged by developer. (Tue, 08 Nov 2011 20:19:02 GMT) Full text and rfc822 format available.

Message #34 received at 9926-done <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: 9926-done <at> debbugs.gnu.org, srs <at> kth.se
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 12:18:07 -0800
On 11/08/11 09:09, Stefan Monnier wrote:
> So I'd rather use the OP's patch that only affects the Hurd.

Sounds good.  I did that as bzr 106331
and am marking this bug as done.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 20:37:01 GMT) Full text and rfc822 format available.

Message #37 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 9926 <at> debbugs.gnu.org
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 12:36:31 -0800
On 11/08/11 09:23, Eli Zaretskii wrote:
> I wonder if the above change for ms-w32.h is TRT.

Yes, Stefan wondered the same thing.  I expect the answer is "no".
Here's a revised patch (intended for 24.2).

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-08 20:15:17 +0000
+++ src/ChangeLog	2011-11-08 20:31:58 +0000
@@ -1,5 +1,17 @@
 2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
 
+	Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926).
+	* lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS.
+	* s/cygwin.h, s/darwin.h, s/freebsd.h, s/gnu.h, s/irix6-5.h, s/msdos.h:
+	* s/netbsd.h, s/sol2-6.h:
+	Remove definition of GC_MARK_STACK, since the default now works.
+	* s/aix4-2.h, s/hpux10-20.h, s/unixware.h:
+	Define GC_MARK_STACK to GC_USE_GCPROS_AS_BEFORE, since that's
+	no longer the default.
+	* s/gnu-linux.h (GC_MARK_STACK): Adjust to change in default.
+
+2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>
+
 	* s/gnu.h (GC_MARK_STACK): Define to GC_MAKE_GCPROS_NOOPS (Bug#9926).
 
 2011-11-08  Paul Eggert  <eggert <at> cs.ucla.edu>

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-11-07 17:04:01 +0000
+++ src/lisp.h	2011-11-08 20:31:58 +0000
@@ -2213,7 +2213,7 @@
 #define GC_USE_GCPROS_CHECK_ZOMBIES	3
 
 #ifndef GC_MARK_STACK
-#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #endif
 
 /* Whether we do the stack marking manually.  */

=== modified file 'src/s/aix4-2.h'
--- src/s/aix4-2.h	2011-07-07 01:32:56 +0000
+++ src/s/aix4-2.h	2011-11-08 20:31:58 +0000
@@ -75,3 +75,7 @@
    Emacs currently calls xrealloc on the results of get_current_dir name,
    to avoid a crash just use the Emacs implementation for that function.  */
 #define BROKEN_GET_CURRENT_DIR_NAME 1
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE

=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h	2011-03-17 05:15:08 +0000
+++ src/s/cygwin.h	2011-11-08 20:31:58 +0000
@@ -85,12 +85,6 @@
    change their controlling terminal */
 #define vfork fork
 
-/* This should work (at least when compiling with gcc).  But I have no way
-   or intention to verify or even test it.  If you encounter a problem with
-   it, feel free to change this setting, but please add a comment here about
-   why it needed to be changed.  */
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-
 /* Virtual addresses of pure and impure space can vary, as on Windows.  */
 #define VIRT_ADDR_VARIES
 

=== modified file 'src/s/darwin.h'
--- src/s/darwin.h	2011-08-09 22:13:11 +0000
+++ src/s/darwin.h	2011-11-08 20:31:58 +0000
@@ -145,6 +145,3 @@
    It is already a controlling terminal of subprocess, because we did
    ioctl TIOCSCTTY.  */
 #define DONT_REOPEN_PTY
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK   GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/freebsd.h'
--- src/s/freebsd.h	2011-02-16 01:35:20 +0000
+++ src/s/freebsd.h	2011-11-08 20:31:58 +0000
@@ -58,6 +58,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK 	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/gnu-linux.h'
--- src/s/gnu-linux.h	2011-09-09 01:06:52 +0000
+++ src/s/gnu-linux.h	2011-11-08 20:31:58 +0000
@@ -145,7 +145,6 @@
     || defined __arm__ || defined __powerpc__ || defined __amd64__ \
     || defined __ia64__ || defined __sh__
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #ifdef __mc68000__
 #define GC_LISP_OBJECT_ALIGNMENT 2
 #endif
@@ -158,4 +157,6 @@
 		 __builtin_ia64_bsp (), 0);			\
   } while (0)
 #endif
+#else
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
 #endif

=== modified file 'src/s/gnu.h'
--- src/s/gnu.h	2011-11-08 20:15:17 +0000
+++ src/s/gnu.h	2011-11-08 20:31:58 +0000
@@ -43,6 +43,3 @@
   ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)
 #endif /* !_IO_STDIO_H */
 #endif /* emacs */
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK 	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/hpux10-20.h'
--- src/s/hpux10-20.h	2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h	2011-11-08 20:31:58 +0000
@@ -101,6 +101,10 @@
    on HP-UX.  (You get duplicate symbol errors on linking). */
 #undef _FILE_OFFSET_BITS
 
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+
 /* Define VIRT_ADDR_VARIES if the virtual addresses of
    pure and impure space as loaded can vary, and even their
    relative order cannot be relied on.

=== modified file 'src/s/irix6-5.h'
--- src/s/irix6-5.h	2011-07-07 03:24:33 +0000
+++ src/s/irix6-5.h	2011-11-08 20:31:58 +0000
@@ -95,7 +95,6 @@
 
 /* Tested on Irix 6.5.  SCM worked on earlier versions.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 
 
 /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which

=== modified file 'src/s/msdos.h'
--- src/s/msdos.h	2011-02-26 12:55:10 +0000
+++ src/s/msdos.h	2011-11-08 20:31:58 +0000
@@ -137,5 +137,3 @@
 /* Tell the garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-

=== modified file 'src/s/netbsd.h'
--- src/s/netbsd.h	2011-02-16 01:35:20 +0000
+++ src/s/netbsd.h	2011-11-08 20:31:58 +0000
@@ -38,6 +38,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method.  */
-#define GC_MARK_STACK	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/sol2-6.h'
--- src/s/sol2-6.h	2011-04-16 22:06:00 +0000
+++ src/s/sol2-6.h	2011-11-08 20:31:58 +0000
@@ -59,4 +59,3 @@
   }
 
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/unixware.h'
--- src/s/unixware.h	2011-04-16 22:06:00 +0000
+++ src/s/unixware.h	2011-11-08 20:31:58 +0000
@@ -50,3 +50,7 @@
   }
 
 #define	PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#9926; Package emacs. (Tue, 08 Nov 2011 20:59:01 GMT) Full text and rfc822 format available.

Message #40 received at 9926 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 9926 <at> debbugs.gnu.org, srs <at> kth.se
Subject: Re: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 12:09:04 -0500
> I don't see anything wrong with changing Emacs to use GC_MAKE_GCPROS_NOOPS
> on GNU/Hurd.  If there's no objection I would like to install the change
> suggested by Stefan, which should have the same effect as patching gnu.h
> but results in cleaner code internally.  Please see the patch below.

I'd rather keep the old default for now and change it in 24.2, only.
So I'd rather use the OP's patch that only affects the Hurd.

> === modified file 'src/s/ms-w32.h'
> --- src/s/ms-w32.h	2011-11-05 16:30:13 +0000
> +++ src/s/ms-w32.h	2011-11-08 16:29:11 +0000
> @@ -402,5 +402,8 @@
>  #define DebPrint(stuff)
>  #endif
 
> +/* Conservative garbage collection has not been tested, so for now
> +   play it safe and stick with the old-fashioned way of marking.  */
> +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
 
Really?  This sounds wrong,


        Stefan




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 07 Dec 2011 12:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 12 years and 154 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.