From: Thomas Fitzsimmons <fitzsim@fitzsim.org>
To: Noam Postavsky <npostavs@gmail.com>
Cc: 31742@debbugs.gnu.org
Subject: bug#31742: 26.1.50; excorporate.elc byte-compiled in Emacs 25.x fails in Emacs 26.1
Date: Thu, 07 Jun 2018 21:13:34 -0400 [thread overview]
Message-ID: <m3fu1y5bcx.fsf@fitzsim.org> (raw)
In-Reply-To: <CAM-tV-8-qVOkbVO=KpZYOLFYN_tStJycE3CJnCRAFBPdDvd7Mw@mail.gmail.com> (Noam Postavsky's message of "Thu, 7 Jun 2018 13:36:15 -0400")
Noam Postavsky <npostavs@gmail.com> writes:
> On 7 June 2018 at 10:06, Thomas Fitzsimmons <fitzsim@fitzsim.org> wrote:
>
>> Yes, but the error that produces the backtrace happens much later
>> via a different entry point, M-x exco-calendar-show-day:
>>
>> Debugger entered--Lisp error: (wrong-type-argument soap-binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding"))
>> signal(wrong-type-argument (soap-binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")))
>> soap-find-operation(#s(soap-port :name "ExchangeServicePort" :namespace-tag nil :service-url "https://redacted/ews/exchange.asmx" :binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")) "FindItem")
>
>> The initial problem in exco--bind-wsdl (via the M-x excorporate entry
>> point) does not throw an error. Basically, in the failure case, parsing
>> of the WSDL XML is incomplete, and the later error is due to that.
>
> Right, if I just evaluate the following in 26.1 without any 25.1
> bytecode I get a similar error:
>
> (let ((port (make-soap-port
> :name "ExchangeServicePort"
> :namespace-tag nil
> :service-url "https://redacted/ews/exchange.asmx"
> :binding
> '("http://schemas.microsoft.com/exchange/services/2006/messages"
> . "ExchangeServiceBinding"))))
> (soap-find-operation port "FindItem"))
>
> I don't quite understand how it's supposed to work successfully
> though. Is there a way to see it working without having to run a
> server on the other end (i.e., can you give some elisp forms to
> evaluate that make the above work)?
>
> I'm guessing the problem is with some old and new structs not matching
> according to `equal' and/or `sxhash', which cl-old-struct-compat-mode
> doesn't do anything about.
I did some more narrowing and found that the issue is with the use of
symbol properties in soap-resolve-references. I added debugging:
(defun soap-resolve-references (element wsdl)
"Replace names in ELEMENT with the referenced objects in the WSDL.
This is a generic function which invokes a specific resolver
function depending on the type of the ELEMENT.
If ELEMENT has no resolver function, it is silently ignored."
(when (equal (soap-element-name element) "ExchangeServicePort")
(message "1: %s" element)
(message "2: %s" (aref element 0))
(message "3: %s" (get (aref element 0) 'soap-resolve-references)))
(let ((resolver (get (aref element 0) 'soap-resolve-references)))
(when resolver
(funcall resolver element wsdl))))
In the working case, I get:
1: #s(soap-port ExchangeServicePort nil https://mail.cisco.com/ews/exchange.asmx (http://schemas.microsoft.com/exchange/services/2006/messages . ExchangeServiceBinding))
2: soap-port
3: soap-resolve-references-for-port
while in the failing case, I get:
1: [cl-struct-soap-port ExchangeServicePort nil https://mail.cisco.com/ews/exchange.asmx (http://schemas.microsoft.com/exchange/services/2006/messages . ExchangeServiceBinding)]
2: cl-struct-soap-port
3: nil
This means the resolver fails to run and the ExchangeServicePort element
is not expanded, which results in exco-calendar-show-day's subsequent
failure.
It seems like soap-client's use of symbol properties is not safe across
major Emacs versions.
Thomas
next prev parent reply other threads:[~2018-06-08 1:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-07 1:07 bug#31742: 26.1.50; excorporate.elc byte-compiled in Emacs 25.x fails in Emacs 26.1 Thomas Fitzsimmons
2018-06-07 1:14 ` Noam Postavsky
2018-06-07 2:01 ` Thomas Fitzsimmons
2018-06-07 12:21 ` Noam Postavsky
2018-06-07 14:06 ` Thomas Fitzsimmons
2018-06-07 17:36 ` Noam Postavsky
2018-06-08 1:13 ` Thomas Fitzsimmons [this message]
2018-06-08 1:57 ` Noam Postavsky
2018-06-08 2:17 ` Thomas Fitzsimmons
2018-06-08 12:19 ` Noam Postavsky
2018-06-08 14:18 ` Thomas Fitzsimmons
2018-06-09 0:01 ` Alex Harsanyi
2018-06-09 2:54 ` Thomas Fitzsimmons
2018-06-09 9:13 ` Alex Harsanyi
2018-06-09 10:32 ` Thomas Fitzsimmons
2018-06-12 1:55 ` Thomas Fitzsimmons
2018-06-12 17:11 ` Eli Zaretskii
2018-06-13 1:39 ` Thomas Fitzsimmons
2018-06-17 0:12 ` Alex Harsanyi
2018-06-17 0:36 ` Thomas Fitzsimmons
2018-06-17 1:31 ` Alex Harsanyi
2018-06-17 1:36 ` Noam Postavsky
2018-06-17 13:02 ` Thomas Fitzsimmons
2018-06-09 10:30 ` Thomas Fitzsimmons
2018-06-09 12:13 ` Noam Postavsky
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3fu1y5bcx.fsf@fitzsim.org \
--to=fitzsim@fitzsim.org \
--cc=31742@debbugs.gnu.org \
--cc=npostavs@gmail.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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.