From: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: allocate_string_data memory corruption
Date: Mon, 23 Jan 2006 15:21:42 -0500 [thread overview]
Message-ID: <jwvy816ln0q.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <jwv4q41qndc.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Wed, 18 Jan 2006 15:48:33 -0500")
>> In this function, data->string is set to s, and nbytes is set to
>> nbytes. If check_sblock is a no-op, there should be no change.
>> However, we get an abort on the second debugging check:
> Most likely the thing that's happening is that check_sblock takes a "long"
> time during which there's a higher probability for a signal to arrive and
> the bug itself is that one of the signal handlers does some string
> allocation (or some other manipulation of those data structures).
> I'd try something like
> eassert (!in_allocate_string_data);
> in_allocate_string_data = 1;
> ...
> check_sblock();
> ...
> in_allocate_string_data = 0;
> BTW, it's possible that -DSYNC_INPUT fixes the bug.
My recent eassert (!handling_signal) patch uncovered another case where Lisp
objects are allocated asynchronously (and this time, it's allocating
a string rather than a vector, so it's more serious):
A backtrace is attached.
I don't know how to go about fixing this problem (other than
use -DSYNC_INPUT). I seem to remember discussions in the past about moving
the note_mouse_movement code to the normal main loop (i.e. generate
a special Lisp event and bind it in special-event-map) which could solve
this problem, but at the cost of delaying the processing of mouse_movement
even more than -DSYNC_INPUT would.
Stefan
#0 abort () at emacs.c:464
#1 0x00000000006136c7 in die (msg=0x736410 "assertion failed: !handling_signal", file=0x736190 "alloc.c", line=1845) at alloc.c:6127
#2 0x0000000000609d50 in allocate_string () at alloc.c:1845
#3 0x000000000060b182 in make_uninit_multibyte_string (nchars=63, nbytes=63) at alloc.c:2454
#4 0x000000000060b117 in make_uninit_string (length=63) at alloc.c:2435
#5 0x000000000060acfd in make_unibyte_string (contents=0x10047b8 "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1", length=63) at alloc.c:2349
#6 0x000000000060acc2 in make_string (contents=0x10047b8 "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1", nbytes=63) at alloc.c:2334
#7 0x000000000060b0fa in build_string (str=0x10047b8 "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1") at alloc.c:2423
#8 0x000000000053227e in x_load_font (f=0x1b9bb40, fontname=0x10047b8 "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1", size=0) at xterm.c:9726
#9 0x000000000054f2fd in fs_load_font (f=0x1b9bb40, c=0, fontname=0x10047b8 "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1", id=-1, face=0x0) at fontset.c:700
#10 0x000000000054ef6e in fontset_font_pattern (f=0x1b9bb40, id=102, c=0) at fontset.c:633
#11 0x0000000000516fc3 in choose_face_font (f=0x1b9bb40, attrs=0x210da48, fontset=102, c=0, needs_overstrike=0x7fbfffc264) at xfaces.c:6888
#12 0x0000000000507d08 in load_face_font (f=0x1b9bb40, face=0x210d9d0, c=0) at xfaces.c:1257
#13 0x00000000005184d6 in realize_face (cache=0x174e8c0, attrs=0x7fbfffc380, c=0, base_face=0x0, former_face_id=-1) at xfaces.c:7153
#14 0x00000000005145c4 in lookup_face (f=0x1b9bb40, attr=0x7fbfffc380, c=0, base_face=0x0) at xfaces.c:5685
#15 0x0000000000519b2c in face_at_string_position (w=0x1f9de00, string={i = 6917529027653345456, s = {val = 12263600, type = Lisp_String}, u = {val = 12263600, type = Lisp_String}}, pos=1, bufpos=0, region_beg=0, region_end=0, endptr=0x7fbfffc504, base_face_id=14, mouse_p=1) at xfaces.c:7786
#16 0x000000000048fdec in note_mode_line_or_margin_highlight (window={i = -9223372036821623296, s = {val = 33152512, type = Lisp_Vectorlike}, u = {val = 33152512, type = Lisp_Vectorlike}}, x=20, y=53, area=ON_MODE_LINE) at xdisp.c:22128
#17 0x000000000049010a in note_mouse_highlight (f=0x1b9bb40, x=121, y=494) at xdisp.c:22219
#18 0x0000000000523b09 in note_mouse_movement (frame=0x1b9bb40, event=0x7fbfffcb30) at xterm.c:3614
#19 0x000000000052b3ff in handle_one_xevent (dpyinfo=0x10315b0, eventp=0x7fbfffcfd0, finish=0x7fbfffcf6c, hold_quit=0x7fbfffe120) at xterm.c:6573
#20 0x000000000052bfee in XTread_socket (sd=2, expected=1, hold_quit=0x7fbfffe120) at xterm.c:7021
#21 0x0000000000580165 in read_avail_input (expected=1) at keyboard.c:6710
#22 0x0000000000580356 in handle_async_input () at keyboard.c:6856
next prev parent reply other threads:[~2006-01-23 20:21 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-18 16:57 allocate_string_data memory corruption Chong Yidong
2006-01-18 20:48 ` Stefan Monnier
2006-01-20 0:45 ` Chong Yidong
2006-01-20 1:14 ` Richard M. Stallman
2006-01-20 3:48 ` Stefan Monnier
2006-01-23 20:21 ` Stefan Monnier [this message]
2006-01-24 17:23 ` Chong Yidong
2006-01-18 21:35 ` Ken Raeburn
2006-01-18 23:56 ` Chong Yidong
2006-01-19 8:53 ` Romain Francoise
2006-01-19 20:57 ` Stefan Monnier
2006-01-19 22:48 ` Kim F. Storm
2006-01-20 3:46 ` Stefan Monnier
2006-01-20 22:58 ` Richard M. Stallman
2006-01-25 3:26 ` Chong Yidong
2006-01-25 15:45 ` Richard M. Stallman
2006-01-20 1:14 ` Richard M. Stallman
2006-01-20 9:28 ` Ken Raeburn
2006-01-20 22:58 ` Richard M. Stallman
2006-01-18 22:06 ` Eli Zaretskii
2006-01-18 23:48 ` David Kastrup
2006-01-18 23:48 ` Chong Yidong
2006-01-19 1:15 ` Stefan Monnier
2006-01-19 3:21 ` Ken Raeburn
2006-01-19 4:36 ` Eli Zaretskii
2006-01-20 1:14 ` Richard M. Stallman
2006-01-20 3:56 ` Stefan Monnier
2006-01-20 14:49 ` Chong Yidong
2006-01-21 19:57 ` Richard M. Stallman
2006-01-22 17:37 ` Stefan Monnier
2006-01-20 22:58 ` Richard M. Stallman
2006-01-21 4:48 ` Stefan Monnier
2006-01-21 17:31 ` Chong Yidong
2006-01-22 3:57 ` Richard M. Stallman
2006-01-22 16:45 ` Stefan Monnier
2006-01-22 20:06 ` Andreas Schwab
2006-01-23 0:10 ` Richard M. Stallman
2006-01-23 0:35 ` Ken Raeburn
2006-01-23 1:58 ` Stefan Monnier
2006-01-23 2:06 ` Stefan Monnier
2006-01-24 16:46 ` Richard M. Stallman
2006-01-23 0:55 ` Stefan Monnier
2006-01-24 16:46 ` Richard M. Stallman
2006-01-24 17:57 ` Kim F. Storm
2006-01-24 18:33 ` Chong Yidong
2006-01-25 15:45 ` Richard M. Stallman
2006-01-26 1:41 ` Chong Yidong
2006-01-26 17:46 ` Richard M. Stallman
2006-01-26 18:40 ` Stefan Monnier
2006-01-26 19:45 ` Chong Yidong
2006-01-27 22:32 ` Richard M. Stallman
2006-01-27 23:33 ` Stefan Monnier
2006-01-29 14:53 ` Chong Yidong
2006-01-29 4:58 ` Chong Yidong
2006-01-30 0:57 ` Richard M. Stallman
2006-01-30 1:06 ` Chong Yidong
2006-01-27 22:32 ` Richard M. Stallman
2006-01-26 19:10 ` Chong Yidong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvy816ln0q.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).