GNU bug report logs -
#23424
better error reporting when package archives have issues
Previous Next
Full log
Message #48 received at 23424 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
I was finally able to get the backtrace for end-of-file after rebuilding
emacs without those 2 assertion check flags.
>
So the last elisp-land function to propagate the error was in url-http.el:
=====
(defun url-http-activate-callback ()
"Activate callback specified when this buffer was created."
(url-http-mark-connection-as-free (url-host url-current-object)
(url-port url-current-object)
url-http-process)
(url-http-debug "Activating callback in buffer (%s): %S %S"
(buffer-name) url-callback-function url-callback-arguments)
(apply url-callback-function url-callback-arguments))
=====
I see that url-http-debug form but it is not run because the error appears
too soon and the user does not have change to hit C-g to make the info
print in url-http-debug. So how about printing that info if "(apply
url-callback-function url-callback-arguments)" results in error?
With the above "melpa-fake" archive from my gist.github.com and a modified
version of url-http-activate-callback as below:
=====
(defun url-http-activate-callback ()
"Activate callback specified when this buffer was created."
(url-http-mark-connection-as-free (url-host url-current-object)
(url-port url-current-object)
url-http-process)
(url-http-debug "Activating callback in buffer (%s): %S %S"
(buffer-name) url-callback-function url-callback-arguments)
(message "url-callback-function: %S" url-callback-function)
(apply url-callback-function url-callback-arguments))
=====
I get:
=====
url-callback-function: #[257 <byte-code> [("melpa-fake" . "
https://gist.githubusercontent.com/kaushalmodi/0603d601d84fc3282a34f08d3fe75f30/raw/597a359fba08dac61ff20e1ece6437b406a5a622/")
"archive-contents" t "
https://gist.githubusercontent.com/kaushalmodi/0603d601d84fc3282a34f08d3fe75f30/raw/597a359fba08dac61ff20e1ece6437b406a5a622/archive-contents"
package-user-dir package-check-signature require url-handlers
generate-new-buffer " *temp*" make-byte-code 0 <byte-code> vconcat vector
[buffer-name kill-buffer] 2 (error) plist-get :error error "Error
retrieving: %s %S" search-forward-regexp "^
?
?" nil noerror "incomprehensible buffer" url-insert-buffer-contents
kill-buffer t package--update-downloads-in-progress signal buffer-string
expand-file-name format "archives/%s" read-from-string make-directory
write-region silent package--check-signature 256 <byte-code> [write-region
nil silent mapconcat epg-signature-to-string "
" ".signed"] 7 "
(fn &optional GOOD-SIGS)" "\301\300!\207"
[package--update-downloads-in-progress] package-unsigned-archives] 20 "
(fn STATUS)"]
error in process filter: End of file during parsing [2 times]
=====
So can we have something like:
- If (apply url-callback-function url-callback-arguments) returns an
error, then extract the url being fetched from url-callback-function and
print some like "Error incurred when when processing XYZ url.". In this
case, we know that read-from-string threw an error. So we can even say that
the string fetched from XYZ url could not be parsed as a valid lisp form
(it does not necessarily mean that it read an empty string; in this case
the lisp form was incomplete).
The value of url-callback-function has a lot of other info which I do not
understand (I spy mainly the URL in it and "read-from-string" in it). But
may be using all the info in that var, we can have a well constructed error
message that can tell us what exactly went wrong. What do you think?
--
--
Kaushal Modi
[Message part 2 (text/html, inline)]
This bug report was last modified 9 years and 100 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.