unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* libsigsegv?
@ 2014-09-11 15:08 Eli Zaretskii
  2014-09-11 15:49 ` libsigsegv? Dmitry Antipov
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2014-09-11 15:08 UTC (permalink / raw)
  To: emacs-devel

Apropos stack overflow protection: why not use libsigsegv if it is
available?  It is capable of doing what we want (AFAICT), and supports
more platforms, including MS-Windows.



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

* Re: libsigsegv?
  2014-09-11 15:08 libsigsegv? Eli Zaretskii
@ 2014-09-11 15:49 ` Dmitry Antipov
  2014-09-11 16:04   ` libsigsegv? Eli Zaretskii
  2014-09-11 19:27   ` libsigsegv? Stefan Monnier
  0 siblings, 2 replies; 7+ messages in thread
From: Dmitry Antipov @ 2014-09-11 15:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

On 09/11/2014 07:08 PM, Eli Zaretskii wrote:

> Apropos stack overflow protection: why not use libsigsegv if it is
> available?  It is capable of doing what we want (AFAICT), and supports
> more platforms, including MS-Windows.

1. Stefan's mood gets worse after each new library dependency.

2. Basically libsigsegv uses the following heuristics to distinguish between
    stack overflow and other kinds of SIGSEGVs:
    a) If the fault address is near the stack pointer, it's a stack overflow.
    b) If the fault address is near and beyond the bottom of the stack's virtual
       memory area, it's a stack overflow.
    c) If the stack pointer is near the bottom of the stack's virtual memory area,
       it's a stack overflow.

    Currently we have only b), and this is the only thing which can be implemented
    staying in POSIX interfaces and without architecture-dependent tricks. a) may
    be implemented in a small forest of #ifdefs, and it doesn't worth using an
    extra library. c) is the most controversial - for example, on GNU/Linux it works
    by opening and reading /proc/self/maps.  Do you really want to open and read file
    on SIGSEGV?  I do not.

Dmitry




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

* Re: libsigsegv?
  2014-09-11 15:49 ` libsigsegv? Dmitry Antipov
@ 2014-09-11 16:04   ` Eli Zaretskii
  2014-09-11 16:19     ` libsigsegv? Paul Eggert
  2014-09-11 16:20     ` libsigsegv? Dmitry Antipov
  2014-09-11 19:27   ` libsigsegv? Stefan Monnier
  1 sibling, 2 replies; 7+ messages in thread
From: Eli Zaretskii @ 2014-09-11 16:04 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: emacs-devel

> Date: Thu, 11 Sep 2014 19:49:19 +0400
> From: Dmitry Antipov <dmantipov@yandex.ru>
> CC: emacs-devel@gnu.org
> 
> On 09/11/2014 07:08 PM, Eli Zaretskii wrote:
> 
> > Apropos stack overflow protection: why not use libsigsegv if it is
> > available?  It is capable of doing what we want (AFAICT), and supports
> > more platforms, including MS-Windows.
> 
> 1. Stefan's mood gets worse after each new library dependency.

But what is your take on this?

Please note that my suggestion is to use the library only
_if_available_, and only for stack overflow detection.

> 2. Basically libsigsegv uses the following heuristics to distinguish between
>     stack overflow and other kinds of SIGSEGVs:
>     a) If the fault address is near the stack pointer, it's a stack overflow.
>     b) If the fault address is near and beyond the bottom of the stack's virtual
>        memory area, it's a stack overflow.
>     c) If the stack pointer is near the bottom of the stack's virtual memory area,
>        it's a stack overflow.
> 
>     Currently we have only b), and this is the only thing which can be implemented
>     staying in POSIX interfaces and without architecture-dependent tricks.

But libsigsegv already did all those tricks, and it stays stable for
quites some time on many platforms (the long and impressive list is in
the library, I suggest to take a look).  So why not use all that
knowledge and experience?

>     a) may be implemented in a small forest of #ifdefs, and it
>     doesn't worth using an extra library.

Are you going to implement it for the platforms we support?  The
library is exceedingly small and static, btw.

>     c) is the most controversial - for example, on GNU/Linux it works
>     by opening and reading /proc/self/maps.  Do you really want to open and read file
>     on SIGSEGV?  I do not.

/proc/self/maps is not a real file, AFAIK.

Besides, other projects do that (e.g., Gawk).  I don't see why we
shouldn't.



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

* Re: libsigsegv?
  2014-09-11 16:04   ` libsigsegv? Eli Zaretskii
@ 2014-09-11 16:19     ` Paul Eggert
  2014-09-11 16:20     ` libsigsegv? Dmitry Antipov
  1 sibling, 0 replies; 7+ messages in thread
From: Paul Eggert @ 2014-09-11 16:19 UTC (permalink / raw)
  To: Eli Zaretskii, Dmitry Antipov; +Cc: emacs-devel

Eli Zaretskii wrote:
> other projects do that (e.g., Gawk).

And other projects avoid libsigsegv and do it themselves (e.g., 
coreutils, m4), due in part to the problems that Dmitry mentioned.  I am 
skeptical about using libsigsegv, though I admit I haven't looked into 
the details for quite some time.



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

* Re: libsigsegv?
  2014-09-11 16:04   ` libsigsegv? Eli Zaretskii
  2014-09-11 16:19     ` libsigsegv? Paul Eggert
@ 2014-09-11 16:20     ` Dmitry Antipov
  2014-09-11 16:48       ` libsigsegv? Eli Zaretskii
  1 sibling, 1 reply; 7+ messages in thread
From: Dmitry Antipov @ 2014-09-11 16:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

On 09/11/2014 08:04 PM, Eli Zaretskii wrote:

> But what is your take on this?

I don't like to discuss nearly the same things twice:
https://lists.gnu.org/archive/html/emacs-devel/2014-02/msg00063.html

> But libsigsegv already did all those tricks, and it stays stable for
> quites some time on many platforms (the long and impressive list is in
> the library, I suggest to take a look).  So why not use all that
> knowledge and experience?

"Use" != "link with that library".

> Besides, other projects do that (e.g., Gawk).  I don't see why we
> shouldn't.

Not on my system, BTW:

$ ldd /usr/bin/gawk
         linux-vdso.so.1 =>  (0x00007fffe5b54000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003291400000)
	libm.so.6 => /lib64/libm.so.6 (0x0000003291000000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003290c00000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003290800000)

AFAICS Fedora guys uses --with-libsigsegv-prefix=no for gawk since 2009.

Dmitry




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

* Re: libsigsegv?
  2014-09-11 16:20     ` libsigsegv? Dmitry Antipov
@ 2014-09-11 16:48       ` Eli Zaretskii
  0 siblings, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2014-09-11 16:48 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: emacs-devel

> Date: Thu, 11 Sep 2014 20:20:14 +0400
> From: Dmitry Antipov <dmantipov@yandex.ru>
> CC: emacs-devel@gnu.org
> 
> > Besides, other projects do that (e.g., Gawk).  I don't see why we
> > shouldn't.
> 
> Not on my system, BTW:

It's an optional feature, in Gawk as well.



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

* Re: libsigsegv?
  2014-09-11 15:49 ` libsigsegv? Dmitry Antipov
  2014-09-11 16:04   ` libsigsegv? Eli Zaretskii
@ 2014-09-11 19:27   ` Stefan Monnier
  1 sibling, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2014-09-11 19:27 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: Eli Zaretskii, emacs-devel

> 1. Stefan's mood gets worse after each new library dependency.

At the same time, I prefer when we use an off the shelf library over
reimplementing the functionality by hand.

As for my opinion on stack-overflow handling: I think it's of very
little importance.


        Stefan "the wonders of ambiguity"



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

end of thread, other threads:[~2014-09-11 19:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-11 15:08 libsigsegv? Eli Zaretskii
2014-09-11 15:49 ` libsigsegv? Dmitry Antipov
2014-09-11 16:04   ` libsigsegv? Eli Zaretskii
2014-09-11 16:19     ` libsigsegv? Paul Eggert
2014-09-11 16:20     ` libsigsegv? Dmitry Antipov
2014-09-11 16:48       ` libsigsegv? Eli Zaretskii
2014-09-11 19:27   ` libsigsegv? Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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