[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31946: 27.0.50; The NSM should warn about more TLS problems
From: |
Andy Moreton |
Subject: |
bug#31946: 27.0.50; The NSM should warn about more TLS problems |
Date: |
Mon, 26 Aug 2019 18:45:14 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (windows-nt) |
On Mon 26 Aug 2019, Eli Zaretskii wrote:
>> From: Andy Moreton <andrewjmoreton@gmail.com>
>> Date: Mon, 26 Aug 2019 14:13:18 +0100
>>
>> On Mon 26 Aug 2019, Lars Ingebrigtsen wrote:
>>
>> > The netsec branch has now been merged into the trunk and I'm closing
>> > this bug report.
>>
>> After this merge, the network tests fail on 64 bit windows (MSYS2), and
>> using any network functionality results in crashes.
>>
>> >From emacs --no-desktop under gdb, running list-packages pops upo the
>> NSM "Certificate information" window and asks "Continue comnecting?".
>> Any of the asnwer for this question result in a crash.
>>
>> warning: HEAP[emacs.exe]:
>> warning: Invalid address specified to RtlFreeHeap( 0000000002720000,
>> 0000000006037150 )
>>
>> Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
>> 0x00007ff9199863b7 in ntdll!RtlpNtMakeTemporaryKey () from
>> C:\WINDOWS\SYSTEM32\ntdll.dll
>> (gdb) #0 0x00007ff9199863b7 in ntdll!RtlpNtMakeTemporaryKey () from
>> C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #1 0x00007ff919941467 in ntdll!memset () from C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #2 0x00007ff919985290 in ntdll!RtlpNtMakeTemporaryKey () from
>> C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #3 0x00007ff9199356b8 in ntdll!memset () from C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #4 0x00007ff9198c07a0 in ntdll!RtlGetCurrentServiceSessionId () from
>> C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #5 0x00007ff9198bfba1 in ntdll!RtlFreeHeap () from
>> C:\WINDOWS\SYSTEM32\ntdll.dll
>> No symbol table info available.
>> #6 0x000000040029e7aa in free_after_dump (ptr=0x6037150) at
>> C:/emacs/git/emacs/master/src/w32heap.c:504
>> No locals.
>> #7 0x000000040018b7f4 in xfree (block=0x6037150) at
>> C:/emacs/git/emacs/master/src/alloc.c:748
>> No locals.
>> #8 0x0000000400227bb0 in Fgnutls_format_certificate (cert=XIL(0xd97ad24))
>> at C:/emacs/git/emacs/master/src/gnutls.c:1616
>
> That's because any memory allocated by GnuTLS cannot be freed by Emacs
> via 'free' or 'xfree', it needs to be freed by calling 'gnutls_free'
> (the GnuTLS manual clearly says that, btw). That crashes, because on
> Windows we use our own implementation of 'free', which uses a
> different heap.
Agreed, but master built from commit 1071a4f still crashes in the same
way:
Thread 1 received signal SIGSEGV, Segmentation fault.
0x00000000051d6248 in ?? () from C:\msys64\mingw64\bin\libgnutls-30.dll
(gdb) bt
#0 0x00000000051d6248 in ?? () from C:\msys64\mingw64\bin\libgnutls-30.dll
#1 0x0000000400227be4 in Fgnutls_format_certificate (cert=XIL(0xd8e36e4)) at
C:/emacs/git/emacs/master/src/gnutls.c:1619
#2 0x00000004001c2091 in funcall_subr (subr=0x4006667c0
<Sgnutls_format_certificate>, numargs=0x1, args=0xbfba20) at
C:/emacs/git/emacs/master/src/eval.c:2876
[snipped]
Lisp Backtrace:
"gnutls-format-certificate" (0xbfba20)
"nsm-query-user" (0xbfc0a0)
"nsm-query" (0xbfc5b0)
"nsm-check-tls-connection" (0xbfcbc0)
"nsm-verify-connection" (0xbfd0c8)
"read-event" (0xbfdd78)
"sit-for" (0xbfe298)
"execute-extended-command" (0xbfea00)
"funcall-interactively" (0xbfe9f8)
"call-interactively" (0xbfeec0)
"command-execute" (0xbff3f8)
(gdb) f 1
#1 0x0000000400227be4 in Fgnutls_format_certificate (cert=XIL(0xd8e36e4)) at
C:/emacs/git/emacs/master/src/gnutls.c:1619
1619 gnutls_free (out.data);
(gdb) info locals
err = 0x0
crt = 0x61947a0
crt_data = {
data = 0xd8e8588 "-----BEGIN
CERTIFICATE-----\nMIIFUTCCBDmgAwIBAgISBOm+yiBCrLLuPB59/zwFk1v7MA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw"...,
size = 0x76f
}
out = {
data = 0x60fc3f0 "X.509 Certificate Information:\n\tVersion: 3\n\tSerial
Number (hex): 04e9beca2042acb2ee3c1e7dff3c05935bfb\n\tIssuer: CN=Let's Encrypt
Authority X3,O=Let's Encrypt,C=US\n\tValidity:\n\t\tNot Before: Wed Aug 07
20"...,
size = 0x101f
}
out_buf = 0x9ae8690 "X.509 Certificate Information:\n\tVersion: 3\n\tSerial
Number (hex): 04e9beca2042acb2ee3c1e7dff3c05935bfb\n\tIssuer: CN=Let's Encrypt
Authority X3,O=Let's Encrypt,C=US\n\tValidity:\n\t\tNot Before: Wed Aug 07
20"...
result = XIL(0x5a90003)
In Fgnutls_format_certificate, should out_buf be freed after calling
build_string ? Removing both xfree(out.data) and xfree(out_buf) from the
end of that function does give me a running emacs.
AndyM
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Lars Ingebrigtsen, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Andy Moreton, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Eli Zaretskii, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems,
Andy Moreton <=
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Eli Zaretskii, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Andy Moreton, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Eli Zaretskii, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Andy Moreton, 2019/08/26
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Eli Zaretskii, 2019/08/27
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Andy Moreton, 2019/08/27
- bug#31946: 27.0.50; The NSM should warn about more TLS problems, Eli Zaretskii, 2019/08/27