bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21428: 24.5; Crash of emacs on OS X, installed via homebrew cask


From: Rainer M Krug
Subject: bug#21428: 24.5; Crash of emacs on OS X, installed via homebrew cask
Date: Fri, 25 Sep 2015 11:34:03 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (darwin)

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Rainer M Krug <Rainer@krugs.de>
>> Cc: 21428@debbugs.gnu.org,  mituharu+bug-gnu-emacs-mac@math.s.chiba-u.ac.jp
>> Date: Thu, 24 Sep 2015 20:37:00 +0200
>> 
>> > It helps: the offending line seems to be the one that shows this:
>> >
>> >        - [ ] ownFree
>> >
>> > with "ownFree" highlighted by a green underwave.  Do you know what is
>> > that underwave face?  (If you don't, you could recreate the buffer in
>> > a live session, then go to that place and type "M-x
>> > describe-text-properties RET".)
>> 
>> In the life session, I get the following: (as I continued some editing,
>> the position might be off compared to the session which crashed)
>> 
>> ,----
>> | Text content at position 34253:
>> | 
>> | 
>> | There is an overlay here:
>> |  From 34252 to 34259
>> |   evaporate            t
>> |   face                 flyspell-duplicate
>> |   flyspell-overlay     t
>> |   help-echo            "mouse-2: correct word at point"
>> |   keymap               [Show]
>> |   mouse-face           highlight
>
> OK, so the face is flyspell-duplicate.
>
>> ,----
>> | Face: flyspell-duplicate (sample) (customize this face)
>> | 
>> | Documentation:
>> | Flyspell face for words that appear twice in a row.
>> | See also ‘flyspell-duplicate-distance’.
>> | 
>> | Defined in ‘flyspell.el’.
>> | 
>> |            Family: unspecified
>> |           Foundry: unspecified
>> |             Width: unspecified
>> |            Height: unspecified
>> |            Weight: unspecified
>> |             Slant: unspecified
>> |        Foreground: unspecified
>> | DistantForeground: unspecified
>> |        Background: unspecified
>> |         Underline: (:style wave :color #008000)
>> |          Overline: unspecified
>> |    Strike-through: unspecified
>> |               Box: unspecified
>> |           Inverse: unspecified
>> |           Stipple: unspecified
>> |              Font: unspecified
>> |           Fontset: unspecified
>> |           Inherit: nil
>> | 
>> | [back]
>> `----
>> 
>> Anything strange here?
>
> No, looks perfectly OK.  The problem is not with the face itself, it's
> with its "realization" and caching by the display engine.
>
>> I leave the session as it is to provide further info.
>
> Actually, I think we've got all the info I need at this point.
>
> We now need to repeat this procedure in another 2 or 3 similar
> crashes: display the face ID, the "used" count of the frame's face
> cache, then use "pgrow" in the call-stack frame that calls the
> 'draw_glyphs' function, to show the text to be displayed in that face,
> and finally see which face it is in a "live" display.  Maybe we will
> see some pattern common to all those cases, although I'm starting to
> doubt that.

OK - new crash: I updated this morning from git and recompiled.

This time it is face #42 and it seems to be in the bar above the
minibuffer (mode-line)??? The character look like mode-bar, but I can't
see them anywhere.

I also attach again a screenshot.

Attachment: Screenshot 2015-09-25 11.14.53.png
Description: PNG image



,----
| xdisp.c:24333: Emacs fatal error: assertion failed: face != NULL
| 
| Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at 
emacs.c:370
| 370     signal (sig, SIG_DFL);
| (gdb) bt
| #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370
| #1  0x000000010022569b in die (msg=0x1003b680a "face != NULL", 
file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951
| #2  0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, 
glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333
| #3  0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, 
start=0, end=23, overlaps=0) at xdisp.c:24558
| #4  0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, 
area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at 
xdisp.c:25225
| #5  0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, 
updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at 
xdisp.c:27256
| #6  0x0000000100011d48 in update_text_area (w=0x1020bfbe0, 
updated_row=0x11254d100, vpos=1) at dispnew.c:3611
| #7  0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, 
mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854
| #8  0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3477
| #9  0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3219
| #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at 
dispnew.c:3217
| #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, 
inhibit_hairy_id_p=false) at dispnew.c:3108
| #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815
| #13 0x0000000100053a79 in redisplay () at xdisp.c:13059
| #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, 
prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465
| #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, 
bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, 
fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030
| #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348
| #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 
<command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309
| #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088
| #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 
<command_loop_2>, arg=0) at eval.c:1073
| #20 0x000000010017c890 in command_loop () at keyboard.c:1067
| #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673
| #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744
| #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643
| Current language:  auto; currently minimal
| 
| Lisp Backtrace:
| "redisplay_internal (C function)" (0x0)
| (gdb) bt full
| #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370
| No locals.
| #1  0x000000010022569b in die (msg=0x1003b680a "face != NULL", 
file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951
| No locals.
| #2  0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, 
glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333
|       face = (struct face *) 0x0
|       code = 0
| #3  0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, 
start=0, end=23, overlaps=0) at xdisp.c:24558
|       glyph = (struct glyph *) 0x11253ae00
|       last = (struct glyph *) 0x11253b250
|       voffset = 0
|       glyph_not_available_p = false
| #4  0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, 
area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at 
xdisp.c:25225
|       face_id = 42
|       char2b = (XChar2b *) 0x7fff5fbfb690
|       first_glyph = (struct glyph *) 0x11253ae00
|       head = (struct glyph_string *) 0x7fff5fbfb6c0
|       tail = (struct glyph_string *) 0x7fff5fbfb6c0
|       s = (struct glyph_string *) 0x7fff5fbfb6c0
|       clip_head = (struct glyph_string *) 0x0
|       clip_tail = (struct glyph_string *) 0x0
|       i = 0
|       j = 1519899
|       x_reached = 32767
|       last_x = 1256
|       area_left = 8
|       f = (struct frame *) 0x10644a830
|       sa_avail = 16338
|       sa_count = 5
|       sa_must_free = false
| #5  0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, 
updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at 
xdisp.c:27256
|       x = 16777216
|       hpos = 0
|       chpos = 16
| #6  0x0000000100011d48 in update_text_area (w=0x1020bfbe0, 
updated_row=0x11254d100, vpos=1) at dispnew.c:3611
|       current_row = (struct glyph_row *) 0x11246bf00
|       desired_row = (struct glyph_row *) 0x11254d100
|       rif = (struct redisplay_interface *) 0x1007d8e98
|       changed_p = false
| #7  0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, 
mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854
|       current_row = (struct glyph_row *) 0x11246bf00
|       desired_row = (struct glyph_row *) 0x11254d100
|       rif = (struct redisplay_interface *) 0x1007d8e98
|       changed_p = false
| #8  0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3477
|       vpos = 1
|       i = 139313
|       end = (struct glyph_row *) 0x112555100
|       mode_line_row = (struct glyph_row *) 0x112555100
|       header_line_row = (struct glyph_row *) 0x11254d000
|       changed_p = false
|       mouse_face_overwritten_p = false
|       row = (struct glyph_row *) 0x11254d100
|       yb = 1402
|       n_updated = 0
|       desired_matrix = (struct glyph_matrix *) 0x111951a70
|       paused_p = false
|       preempt_count = 17
|       rif = (struct redisplay_interface *) 0x1007d8e98
| #9  0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3219
|       paused_p = false
| #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at 
dispnew.c:3217
|       paused_p = false
| #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, 
inhibit_hairy_id_p=false) at dispnew.c:3108
|       paused_p = 255
|       root_window = (struct window *) 0x10655ed10
| #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815
|       gcscrollbars = true
|       f = (struct frame *) 0x10644a830
|       w = (struct window *) 0x1020bfbe0
|       sw = (struct window *) 0x1020bfbe0
|       fr = (struct frame *) 0x10644a830
|       pending = false
|       must_finish = true
|       match_p = true
|       tlbufpos = {
|   charpos = 1,
|   bytepos = 1
| }
|       tlendpos = {
|   charpos = 247,
|   bytepos = 247
| }
|       number_of_visible_frames = 1
|       count = 2
|       sf = (struct frame *) 0x10644a830
|       polling_stopped_here = true
|       tail = 4599117875
|       frame = 4400130101
|       consider_all_windows_p = true
|       update_miniwindow_p = true
| #13 0x0000000100053a79 in redisplay () at xdisp.c:13059
| No locals.
| #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, 
prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465
|       echo_current = true
|       c = 0
|       jmpcount = 140734799801360
|       local_getcjmp = 0x7fff5fbfeba0
|       save_jump = 0x7fff5fbfeb00
|       tem = 2
|       save = 0
|       previous_echo_area_message = 0
|       also_record = 0
|       reread = false
|       recorded = false
|       polling_stopped_here = false
|       orig_kboard = (struct kboard *) 0x101146020
| #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, 
bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, 
fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030
|       interrupted_kboard = (KBOARD *) 0x101146020
|       interrupted_frame = (struct frame *) 0x10644a830
|       key = 4297289629
|       used_mouse_menu = false
|       echo_local_start = 0
|       last_real_key_start = 0
|       keys_local_start = 0
|       new_binding = 4317771765
|       count = 2
|       t = 0
|       echo_start = 0
|       keys_start = 0
|       current_binding = 4801369587
|       first_event = 0
|       first_unbound = 31
|       mock_input = 0
|       fkey = {
|   parent = 4404141299,
|   map = 4404141299,
|   start = 0,
|   end = 0
| }
|       keytran = {
|   parent = 4336943683,
|   map = 4336943683,
|   start = 0,
|   end = 0
| }
|       indec = {
|   parent = 4404141363,
|   map = 4404141363,
|   start = 0,
|   end = 0
| }
|       shift_translated = false
|       delayed_switch_frame = 0
|       original_uppercase = 4303326104
|       original_uppercase_position = -1
|       dummyflag = false
|       starting_buffer = (struct buffer *) 0x1015bf7f0
|       fake_prefixed_keys = 0
| #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348
|       cmd = 101117088
|       keybuf = 0x7fff5fbff2f0
|       i = 2
|       prev_modiff = 50091
|       prev_buffer = (struct buffer *) 0x11475fbc0
|       already_adjusted = false
| #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 
<command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309
|       val = 4303299704
|       c = (struct handler *) 0x104a00000
| #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088
|       val = 2
| #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 
<command_loop_2>, arg=0) at eval.c:1073
|       val = 0
|       c = (struct handler *) 0x101037aa0
| #20 0x000000010017c890 in command_loop () at keyboard.c:1067
| No locals.
| #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673
|       count = 1
|       val = 0
| #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744
|       count = 0
|       buffer = 0
| #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643
|       dummy = 140734799806464
|       stack_bottom_variable = 0 '\0'
|       do_initial_setlocale = true
|       dumping = false
|       skip_args = 0
|       rlim = {
|   rlim_cur = 8720000,
|   rlim_max = 67104768
| }
|       no_loadup = false
|       junk = 0x0
|       dname_arg = 0x0
|       dname_arg2 = 0x7fff5fbff870 "\001"
|       ch_to_dir = 0x0
|       original_pwd = 0x0
| 
| Lisp Backtrace:
| "redisplay_internal (C function)" (0x0)
| (gdb) bt
| #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:370
| #1  0x000000010022569b in die (msg=0x1003b680a "face != NULL", 
file=0x1003b24f0 "xdisp.c", line=24333) at alloc.c:6951
| #2  0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, 
glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333
| #3  0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, 
start=0, end=23, overlaps=0) at xdisp.c:24558
| #4  0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, 
area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at 
xdisp.c:25225
| #5  0x000000010006cea1 in x_write_glyphs (w=0x1020bfbe0, 
updated_row=0x11254d100, start=0x11253ae00, updated_area=TEXT_AREA, len=23) at 
xdisp.c:27256
| #6  0x0000000100011d48 in update_text_area (w=0x1020bfbe0, 
updated_row=0x11254d100, vpos=1) at dispnew.c:3611
| #7  0x000000010000f902 in update_window_line (w=0x1020bfbe0, vpos=1, 
mouse_face_overwritten_p=0x7fff5fbfbdc2) at dispnew.c:3854
| #8  0x0000000100007852 in update_window (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3477
| #9  0x000000010000665f in update_window_tree (w=0x1020bfbe0, force_p=true) at 
dispnew.c:3219
| #10 0x000000010000660d in update_window_tree (w=0x10655ed10, force_p=true) at 
dispnew.c:3217
| #11 0x000000010000633b in update_frame (f=0x10644a830, force_p=true, 
inhibit_hairy_id_p=false) at dispnew.c:3108
| #12 0x0000000100051f59 in redisplay_internal () at xdisp.c:13815
| #13 0x0000000100053a79 in redisplay () at xdisp.c:13059
| #14 0x00000001001842e9 in read_char (commandflag=1, map=4801369587, 
prev_event=0, used_mouse_menu=0x7fff5fbfefb7, end_time=0x0) at keyboard.c:2465
| #15 0x000000010017f249 in read_key_sequence (keybuf=0x7fff5fbff2f0, 
bufsize=30, prompt=0, dont_downcase_last=false, can_return_switch_frame=true, 
fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9030
| #16 0x000000010017db46 in command_loop_1 () at keyboard.c:1348
| #17 0x00000001002606b6 in internal_condition_case (bfun=0x10017d550 
<command_loop_1>, handlers=17616, hfun=0x100198dc0 <cmd_error>) at eval.c:1309
| #18 0x0000000100198cbc in command_loop_2 (ignore=0) at keyboard.c:1088
| #19 0x000000010025f77e in internal_catch (tag=42768, func=0x100198c90 
<command_loop_2>, arg=0) at eval.c:1073
| #20 0x000000010017c890 in command_loop () at keyboard.c:1067
| #21 0x000000010017c6d2 in recursive_edit_1 () at keyboard.c:673
| #22 0x000000010017cac3 in Frecursive_edit () at keyboard.c:744
| #23 0x000000010017a66a in main (argc=1, argv=0x7fff5fbff8f0) at emacs.c:1643
| 
| Lisp Backtrace:
| "redisplay_internal (C function)" (0x0)
| (gdb) frame 2
| #2  0x0000000100062ec7 in get_glyph_face_and_encoding (f=0x10644a830, 
glyph=0x11253ae00, char2b=0x7fff5fbfb690) at xdisp.c:24333
| 24333   eassert (face != NULL);
| (gdb) p f->face-caches->used
| No symbol "caches" in current context.
| (gdb) p f->face_cache->used
| $1 = 31
| (gdb) pgrow
| No symbol "row" in current context.
| (gdb) source ./.gdbinit
| DISPLAY = /private/tmp/com.apple.launchd.x7OsOx87fJ/org.macosforge.xquartz:0
| TERM = xterm
| Breakpoint 3 at 0x100178ac2: file emacs.c, line 370.
| Breakpoint 4 at 0x1001b157f: file sysdep.c, line 907.
| (gdb) pgrow
| No symbol "row" in current context.
| (gdb) frame 3
| #3  0x00000001000b57cd in fill_glyph_string (s=0x7fff5fbfb6c0, face_id=42, 
start=0, end=23, overlaps=0) at xdisp.c:24558
| 24558       s->face = get_glyph_face_and_encoding (s->f, glyph,
| (gdb) pgrow
| No symbol "row" in current context.
| (gdb) frame 4
| #4  0x000000010006d579 in draw_glyphs (w=0x1020bfbe0, x=8, row=0x11254d100, 
area=TEXT_AREA, start=0, end=23, hl=DRAW_NORMAL_TEXT, overlaps=0) at 
xdisp.c:25225
| 25225   BUILD_GLYPH_STRINGS (i, end, head, tail, hl, x, last_x);
| (gdb) pgrow
| TEXT: 23 glyphs
|   0    0: CHAR[#] pos=1 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   1    8: CHAR[ ] pos=2 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   2   16: CHAR[ ] pos=3 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   3   24: CHAR[ ] pos=4 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   4   32: CHAR[ ] pos=5 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   5   40: CHAR[-] pos=6 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   6   48: CHAR[*] pos=7 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   7   56: CHAR[-] pos=8 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   8   64: CHAR[ ] pos=9 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|   9   72: CHAR[m] pos=10 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  10   80: CHAR[o] pos=11 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  11   88: CHAR[d] pos=12 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  12   96: CHAR[e] pos=13 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  13  104: CHAR[:] pos=14 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  14  112: CHAR[ ] pos=15 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  15  120: CHAR[o] pos=16 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  16  128: CHAR[r] pos=17 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  17  136: CHAR[g] pos=18 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  18  144: CHAR[ ] pos=19 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  19  152: CHAR[-] pos=20 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  20  160: CHAR[*] pos=21 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  21  168: CHAR[-] pos=22 blev=0,btyp=L w=8 a+d=14+4 face=42 MB
|  22  176: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=14+4 MB
| (gdb) xbacktrace
| "redisplay_internal (C function)" (0x0)
| (gdb)
`----

>
> Thanks.
>

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      Rainer@krugs.de

Skype:      RMkrug

PGP: 0x0F52F982

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]