From: <emacs@kosowsky.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: tzz@lifelogs.com, emacs@kosowsky.org, 15648@debbugs.gnu.org
Subject: bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely
Date: Wed, 23 Oct 2013 13:12:56 -0400 [thread overview]
Message-ID: <21096.920.835718.562924@consult.pretender> (raw)
In-Reply-To: <83wql4hvam.fsf@gnu.org>
Eli Zaretskii wrote at about 18:16:33 +0300 on Wednesday, October 23, 2013:
> > From: <emacs@kosowsky.org>
> > Date: Wed, 23 Oct 2013 00:17:49 -0400
> > Cc: Ted Zlatanov <tzz@lifelogs.com>, 15648@debbugs.gnu.org
> >
> > Stepping through the *Lisp* code shows that the file paths are all
> > properly parsed when cygwin-mount is loaded/activated. Indeed,
> > file-exists-p properly recognizes the cygwin path
> > "/usr/ssl/certs/ca-bundle.crt" and returns nil on the other paths that
> > don't exist in a standard Cygwin setup.
> >
> > Note that if cygwin-mount is not loaded/activated, then
> > "/usr/ssl/certs/ca-bundle.crt" (along with the other list elements)
> > fails the file-exists-p test in gnutls-negotiate so that 'trustfiles'
> > gets set to nil which explains why it doesn't crash in the case when
> > cygwin-mount is not used since trivially 'trustfiles' has no paths
> > associated with it.
> >
> > So, basically, we have the following Catch-22. If cygwin-mount is not
> > loaded/activated, then the cert location for Cygwin is never found. If
> > cygwin-mount is activated then it causes a crash. The result being
> > that in Windows, no certs are ever loaded when using the default
> > definition of gnutls-trustfiles
> >
> > Presumably the problem is that the C-code doesn't know how to deal with
> > a Cygwin (*nix) style path that has been properly recognized by the
> > Lisp code (via cygwin-mount).
>
> The native Windows build of Emacs certainly doesn't understand the
> magic of Cygwin mounts. How can it? The cygwin-mount package cannot
> possibly work for external DLLs that were developed for native Windows
> builds of programs which know nothing about Lisp and Emacs file I/O.
>
> The problem is almost certainly that the GnuTLS code was assured that
> a file exists (because Emacs used cygwin-mount), but then the file
> could not be reached. I can understand why GnuTLS becomes confused.
>
> But since you didn't provide any C-level backtraces, we cannot know
> where that code is, and thus cannot fix it.
>
> > It seems like there are two potential solutions:
> > 1. Use Windows-style paths in the definition of gnutls-trustfiles
> > (this should work in Linux too, since
> > "C:/usr/ssl/certs/ca-bundle.crt" will generally fail the
> > file-exists-p test)
> >
> > 2. Add cygwin-mount functionality to the C-code so that it can parse
> > cygwin (Unix) style paths.
>
> 3. Do not use cygwin-mount in conjunction with the native Windows
> build of Emacs.
>
4. This small patch to gnutls.el will fix the problem by expanding the
file name to a full, valid path:
--- gnutls.el 2013-03-17 13:52:40.000000000 -0400
+++ gnutls.el.new 2013-10-23 12:47:36.503554500 -0400
@@ -174,7 +174,8 @@
(let* ((type (or type 'gnutls-x509pki))
(trustfiles (or trustfiles
(delq nil
- (mapcar (lambda (f) (and f (file-exists-p f) f))
+ (mapcar (lambda (f) (and f (file-exists-p f)
+ (expand-file-name f)))
(if (functionp gnutls-trustfiles)
(funcall gnutls-trustfiles)
gnutls-trustfiles)))))
> > In any case, I imagine the C-code crashes because it sees a Unix-style
> > path while expecting a Windows style path...
>
> Windows supports Unix-style file names. The problem is that the file
> "/usr/ssl/certs/ca-bundle.crt" cannot be found by starting from the
> root directory of the current drive.
The above proposed patch would fix that problem.
>
> > that being said the C-code should be better behaved than that... at
> > a minimum the code should check to make sure the certificate file
> > path is well-formed and exists.
>
> See above: unless you present the backtrace from the crash, no one can
> know where the offending code is, or what it does wrong. Please
> provide that data.
What do I need to do to get a backtrace?
I don't have any C-debugging software on my Windows laptop... and have
never done C-code debugging in a Windows environment...
next prev parent reply other threads:[~2013-10-23 17:12 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 18:29 bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely emacs
2013-10-18 19:38 ` Glenn Morris
2013-10-20 20:24 ` emacs
2013-10-21 14:22 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Ted Zlatanov
2013-10-21 19:30 ` emacs
2013-10-22 13:27 ` Ted Zlatanov
2013-10-22 15:23 ` emacs
2013-10-22 15:41 ` emacs
2013-10-22 19:10 ` emacs
2013-10-22 20:06 ` Ted Zlatanov
2013-10-22 20:22 ` emacs
2013-10-22 20:34 ` Eli Zaretskii
2013-10-22 22:27 ` emacs
2013-10-23 2:51 ` Eli Zaretskii
2013-10-23 4:17 ` emacs
2013-10-23 14:52 ` Ted Zlatanov
2013-10-23 17:25 ` emacs
2013-10-23 18:07 ` Eli Zaretskii
2013-10-23 18:58 ` Ted Zlatanov
2013-10-23 23:45 ` emacs
2013-10-24 0:13 ` emacs
2013-10-24 10:59 ` Ted Zlatanov
2013-10-24 14:10 ` emacs
2013-10-24 15:48 ` Ted Zlatanov
2013-10-24 17:02 ` emacs
2013-10-24 17:57 ` Stefan Monnier
2013-10-24 18:42 ` emacs
2013-10-25 0:59 ` Stefan Monnier
2013-10-25 13:59 ` emacs
2013-10-26 1:52 ` Stefan Monnier
2013-10-29 5:13 ` emacs
2013-11-03 11:42 ` Ted Zlatanov
2013-11-03 15:12 ` emacs
2013-11-03 17:32 ` Eli Zaretskii
2013-11-03 19:12 ` emacs
2013-11-04 16:28 ` Ted Zlatanov
2013-11-04 16:58 ` Eli Zaretskii
2013-11-11 19:12 ` emacs
2013-11-11 19:42 ` Ted Zlatanov
2013-11-11 20:00 ` emacs
2013-11-11 20:00 ` Achim Gratz
2013-11-11 23:58 ` Ted Zlatanov
2013-11-12 0:45 ` emacs
2013-11-11 20:06 ` Eli Zaretskii
2013-11-11 21:53 ` emacs
2013-11-12 3:56 ` Eli Zaretskii
2013-11-12 15:19 ` emacs
2013-11-12 17:42 ` Eli Zaretskii
[not found] ` <<83ppq51pq8.fsf@gnu.org>
2013-11-12 18:08 ` Drew Adams
2013-11-03 21:37 ` Stefan Monnier
2013-10-23 15:16 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Eli Zaretskii
2013-10-23 17:12 ` emacs [this message]
2013-10-23 18:00 ` Eli Zaretskii
2013-10-23 19:49 ` emacs
2013-10-24 2:46 ` Eli Zaretskii
2013-10-25 3:17 ` emacs
2013-10-25 14:09 ` Eli Zaretskii
2013-10-25 15:38 ` Ted Zlatanov
2013-10-25 18:37 ` Eli Zaretskii
2013-11-03 17:30 ` Eli Zaretskii
2013-11-04 16:44 ` Ted Zlatanov
2013-11-04 17:06 ` Eli Zaretskii
2013-11-04 18:05 ` Ted Zlatanov
2013-11-04 22:14 ` emacs
2013-11-05 2:30 ` Ted Zlatanov
2013-11-05 23:11 ` emacs
2013-11-05 23:16 ` Alp Aker
2013-11-05 23:54 ` emacs
2013-11-11 15:53 ` Ted Zlatanov
2013-11-11 19:40 ` emacs
2013-11-11 20:11 ` Eli Zaretskii
2013-11-11 21:56 ` emacs
2013-11-12 3:58 ` Eli Zaretskii
2013-11-12 15:23 ` emacs
2013-11-06 3:51 ` Eli Zaretskii
2013-11-06 5:45 ` emacs
2013-10-22 15:43 ` bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely, " Eli Zaretskii
2013-10-22 20:03 ` Ted Zlatanov
2013-10-22 20:35 ` Andy Moreton
2013-10-22 20:45 ` Eli Zaretskii
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=21096.920.835718.562924@consult.pretender \
--to=emacs@kosowsky.org \
--cc=15648@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=tzz@lifelogs.com \
/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).