emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)]
@ 2019-10-21  2:19 Vladimir Nikishkin
  2019-10-21 10:42 ` Neil Jerram
  0 siblings, 1 reply; 4+ messages in thread
From: Vladimir Nikishkin @ 2019-10-21  2:19 UTC (permalink / raw)
  To: emacs-orgmode



Remember to cover the basics, that is, what you expected to happen and
what in fact did happen.  You don't know how to make a good report?  See

     https://orgmode.org/manual/Feedback.html#Feedback

Your bug report will be posted to the Org mailing list.
------------------------------------------------------------------------

Hello, everyone.

Can we replace the (set) on line 177 of ob-scheme.el with the following
form:
(setq result (if output
                 (let ((g-r-o (geiser-eval--retort-output ret)))
                 (if g-r-o
                     g-r-o
                     "Geiser-eval--retort-output returned nil.\nThe interpreter produced no output\nor there is a bug in geiser (likely!)"))
(geiser-eval--retort-result-str ret "")))))

I am not super sure about what's going on there, but I think that output
can never be an empty list, because in the worst case it is an empty
string.
(But I wouldn't vouch for this.)

Sorry for not sending a diff.

Cheers, Lockywolf

Emacs  : GNU Emacs 26.3 (build 1, x86_64-slackware-linux-gnu, GTK+ Version 3.24.10)
 of 2019-08-30
Package: Org mode version 9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)

current state:
==============
(setq
 org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer)
 org-after-todo-state-change-hook '(org-clock-out-if-current)
 org-babel-after-execute-hook '((lambda nil
				 (if org-inline-image-overlays
				  (progn (org-redisplay-inline-images)))
				 )
				)
 org-metadown-hook '(org-babel-pop-to-session-maybe)
 org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
 org-html-format-inlinetask-function 'org-html-format-inlinetask-default-function
 org-pretty-entities t
 org-odt-format-headline-function 'org-odt-format-headline-default-function
 org-agenda-files '("~/DevLinux/chibi-sicp/index.org" "~/Personal_Planner/Planner.org")
 org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default
 org-modules '(org-habits org-w3m org-bbdb org-bibtex org-docview org-gnus org-info org-irc
	       org-mhe org-rmail)
 org-plantuml-jar-path "/usr/local/bin/plantuml.jar"
 org-export-creator-string "Emacs 26.3 (Org mode 9.1.9)"
 org-mode-hook '(org-eldoc-load turn-on-org-cdlatex
		 (lambda nil (imenu-add-to-menubar "Imenu"))
		 #[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook org-show-block-all append local] 5]
		 #[0 "\300\301\302\303\304$\207"
		   [add-hook change-major-mode-hook org-babel-show-result-all append local] 5]
		 org-babel-result-hide-spec org-babel-hide-all-hashes)
 org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
 org-archive-hook '(org-attach-archive-delete-maybe)
 org-confirm-elisp-link-function 'yes-or-no-p
 org-agenda-before-write-hook '(org-agenda-add-entry-text)
 org-metaup-hook '(org-babel-load-in-session-maybe)
 org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"]
 org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ CONTENTS)"]
 org-babel-pre-tangle-hook '(save-buffer)
 org-latex-compiler "lualatex"
 org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand)
 org-babel-load-languages '((plantuml . t) (C . t) (scheme . t) (latex . t))
 org-log-done 'time
 org-startup-align-all-tables t
 org-html-creator-string "<a href=\"https://www.gnu.org/software/emacs/\">Emacs</a> 26.3 (<a href=\"https://orgmode.org\">Org</a> mode 9.1.9)"
 org-ascii-format-drawer-function #[771 "\207" [] 4 "\n\n(fn NAME CONTENTS WIDTH)"]
 org-src-lang-modes '(("redis" . redis) ("php" . php) ("arduino" . arduino)
		      ("ocaml" . tuareg) ("elisp" . emacs-lisp) ("ditaa" . artist)
		      ("asymptote" . asy) ("dot" . fundamental) ("sqlite" . sql)
		      ("calc" . fundamental) ("C" . c) ("cpp" . c++) ("C++" . c++)
		      ("screen" . shell-script) ("shell" . sh) ("bash" . sh))
 org-catch-invisible-edits t
 org-occur-hook '(org-first-headline-recenter)
 org-edit-src-auto-save-idle-delay 15
 org-agenda-include-diary t
 org-structure-template-alist '(("E"
				 "#+begin_src elisp :exports both :results output\n?\n#+end_src")
				("SV"
				 "#+begin_src scheme :exports both :results value\n?\n#+end_src")
				("SO"
				 "#+begin_src scheme :exports both :results output\n?\n#+end_src")
				("p"
				 "#+begin_src plantuml :exports both :file ? \n#+end_src ")
				("s" "#+BEGIN_SRC ?\n\n#+END_SRC")
				("e" "#+BEGIN_EXAMPLE\n?\n#+END_EXAMPLE")
				("q" "#+BEGIN_QUOTE\n?\n#+END_QUOTE")
				("v" "#+BEGIN_VERSE\n?\n#+END_VERSE")
				("V" "#+BEGIN_VERBATIM\n?\n#+END_VERBATIM")
				("c" "#+BEGIN_CENTER\n?\n#+END_CENTER")
				("C" "#+BEGIN_COMMENT\n?\n#+END_COMMENT")
				("l" "#+BEGIN_EXPORT latex\n?\n#+END_EXPORT")
				("L" "#+LaTeX: ")
				("h" "#+BEGIN_EXPORT html\n?\n#+END_EXPORT") ("H" "#+HTML: ")
				("a" "#+BEGIN_EXPORT ascii\n?\n#+END_EXPORT")
				("A" "#+ASCII: ") ("i" "#+INDEX: ?")
				("I" "#+INCLUDE: %file ?"))
 org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers
		  org-cycle-show-empty-lines org-optimize-window-after-visibility-change)
 org-edit-src-turn-on-auto-save t
 org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate)
 org-hierarchical-todo-statistics nil
 org-odt-format-inlinetask-function 'org-odt-format-inlinetask-default-function
 org-babel-tangle-lang-exts '(("clojure" . "clj") ("latex" . "tex") ("D" . "d")
			      ("C++" . "cpp") ("emacs-lisp" . "el") ("elisp" . "el"))
 org-format-latex-options '(:foreground default :background default :scale 2.0
			    :html-foreground "Black" :html-background "Transparent"
			    :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))
 org-confirm-shell-link-function 'yes-or-no-p
 org-link-parameters '(("id" :follow org-id-open)
		       ("rmail" :follow org-rmail-open :store org-rmail-store-link)
		       ("mhe" :follow org-mhe-open :store org-mhe-store-link)
		       ("irc" :follow org-irc-visit :store org-irc-store-link)
		       ("info" :follow org-info-open :export org-info-export :store
			org-info-store-link)
		       ("gnus" :follow org-gnus-open :store org-gnus-store-link)
		       ("docview" :follow org-docview-open :export org-docview-export :store
			org-docview-store-link)
		       ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link)
		       ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete
			org-bbdb-complete-link :store org-bbdb-store-link)
		       ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs")
		       ("doi" :follow org--open-doi-link)
		       ("elisp" :follow org--open-elisp-link)
		       ("file" :complete org-file-complete-link)
		       ("ftp" :follow (lambda (path) (browse-url (concat "ftp:" path))))
		       ("help" :follow org--open-help-link)
		       ("http" :follow (lambda (path) (browse-url (concat "http:" path))))
		       ("https" :follow (lambda (path) (browse-url (concat "https:" path))))
		       ("mailto" :follow (lambda (path) (browse-url (concat "mailto:" path))))
		       ("news" :follow (lambda (path) (browse-url (concat "news:" path))))
		       ("shell" :follow org--open-shell-link))
 org-latex-format-headline-function 'org-latex-format-headline-default-function
 org-agenda-start-with-follow-mode t
 org-latex-format-inlinetask-function 'org-latex-format-inlinetask-default-function
 org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
 org-image-actual-width nil
 org-html-use-infojs t
 org-html-format-headline-function 'org-html-format-headline-default-function
 org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate
 org-use-speed-commands t
 org-latex-bib-compiler "biber"
 org-default-notes-file "~/org/notes.org"
 )
-- 
--
Vladimir Nikishkin (MiEr, lockywolf)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)]
  2019-10-21  2:19 Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)] Vladimir Nikishkin
@ 2019-10-21 10:42 ` Neil Jerram
       [not found]   ` <c62d8deb-1ef7-378a-60f5-b7775f34a6d5@gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Jerram @ 2019-10-21 10:42 UTC (permalink / raw)
  To: Vladimir Nikishkin; +Cc: Org Mode List

[-- Attachment #1: Type: text/plain, Size: 891 bytes --]

Hi Vladimir,

On Mon, 21 Oct 2019 at 03:21, Vladimir Nikishkin <lockywolf@gmail.com>
wrote:

>
> Can we replace the (set) on line 177 of ob-scheme.el with the following
> form:
> (setq result (if output
>                  (let ((g-r-o (geiser-eval--retort-output ret)))
>                  (if g-r-o
>                      g-r-o
>                      "Geiser-eval--retort-output returned nil.\nThe
> interpreter produced no output\nor there is a bug in geiser (likely!)"))
> (geiser-eval--retort-result-str ret "")))))
>
> I am not super sure about what's going on there, but I think that output
> can never be an empty list, because in the worst case it is an empty
> string.
> (But I wouldn't vouch for this.)
>

Can you explain more?  Have you seen cases
where (geiser-eval--retort-output ret) returns nil, even though you say
just above that it can never do that?

Best wishes,
    Neil

[-- Attachment #2: Type: text/html, Size: 1362 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)]
       [not found]   ` <c62d8deb-1ef7-378a-60f5-b7775f34a6d5@gmail.com>
@ 2019-10-21 14:46     ` Neil Jerram
       [not found]       ` <80649399-906c-76fd-dd0e-2040fd62f9de@gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Jerram @ 2019-10-21 14:46 UTC (permalink / raw)
  To: Vladimir Nikishkin, Org Mode List

[-- Attachment #1: Type: text/plain, Size: 1549 bytes --]

On Mon, 21 Oct 2019 at 15:16, Vladimir Nikishkin <lockywolf@gmail.com>
wrote:

> Yeah. The "output" is not the result of geiser's elisp functions, as far
> as I understand, it comes from comint, which reads it from a scheme
> interpreter, and is expected to be formatted specifically to be fed into
> geiser-eval--retort-output by the geiser scheme functions (running
> inside a scheme interpreter).
>
> So "output" is never 'nil, because comint, when scheme produces some
> rubbish, just makes it an empty string, which is not 'nil.
>
> Then, "output" is expected to be "retorted" back from a serialized
> scheme expression into an elisp expression by
> geiser-eval--retort-output. And this actually may and produce a 'nil,
> but there is no check for it.
>
> So, again, both of the geiser steps (namely, (a) serializing a sexp in
> scheme, and (b) de-serializing it in geiser-eval--retort-output) may fail.
>

I agree that it's fragile for geiser/scheme to output a sexp that it hopes
geiser/elisp will be able to read back.  (I'm guilty of doing that in the
past too!)

Do you have a specific example of that?  It feels like the right thing to
do would be to report that to the Geiser list, as this could and should be
fixed entirely within the Geiser code.


>
> Yes, I have seen this going on, actually quite a lot, because both
> geiser and different scheme interpreters are in constant development and
> get broken every other day.
>

I use Org with Guile 2.2.3 (via Geiser), and it seems a pretty stable setup
to me.

Best wishes,
     Neil

[-- Attachment #2: Type: text/html, Size: 2198 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)]
       [not found]       ` <80649399-906c-76fd-dd0e-2040fd62f9de@gmail.com>
@ 2019-10-22  1:35         ` Vladimir Nikishkin
  0 siblings, 0 replies; 4+ messages in thread
From: Vladimir Nikishkin @ 2019-10-22  1:35 UTC (permalink / raw)
  To: Neil Jerram, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 2614 bytes --]



On 21/10/2019 23:24, Vladimir Nikishkin wrote:
> Well, checking for "output" doesn't seem to be useful any way, since
> "output" is never 'nil.
> 
> Regarding the fact that the error should be reported to the geiser
> mailing list, that's entirely true. The problem is that the person who
> would be responsible for this error would be me. :) At least for the
> chibi-scheme part.
> 
> I don't think that having a few extra checks on the org/geiser interface
> is bad, especially there is also comint coming into play. I can imagine
> valid reasons when "output" is not a valid serialized scheme expression.
> 
> On 21/10/2019 22:46, Neil Jerram wrote:
>> On Mon, 21 Oct 2019 at 15:16, Vladimir Nikishkin <lockywolf@gmail.com
>> <mailto:lockywolf@gmail.com>> wrote:
>>
>>     Yeah. The "output" is not the result of geiser's elisp functions, as far
>>     as I understand, it comes from comint, which reads it from a scheme
>>     interpreter, and is expected to be formatted specifically to be fed into
>>     geiser-eval--retort-output by the geiser scheme functions (running
>>     inside a scheme interpreter).
>>
>>     So "output" is never 'nil, because comint, when scheme produces some
>>     rubbish, just makes it an empty string, which is not 'nil.
>>
>>     Then, "output" is expected to be "retorted" back from a serialized
>>     scheme expression into an elisp expression by
>>     geiser-eval--retort-output. And this actually may and produce a 'nil,
>>     but there is no check for it.
>>
>>     So, again, both of the geiser steps (namely, (a) serializing a sexp in
>>     scheme, and (b) de-serializing it in geiser-eval--retort-output) may
>>     fail.
>>
>>
>> I agree that it's fragile for geiser/scheme to output a sexp that it
>> hopes geiser/elisp will be able to read back.  (I'm guilty of doing that
>> in the past too!)
>>
>> Do you have a specific example of that?  It feels like the right thing
>> to do would be to report that to the Geiser list, as this could and
>> should be fixed entirely within the Geiser code.
>>   
>>
>>
>>     Yes, I have seen this going on, actually quite a lot, because both
>>     geiser and different scheme interpreters are in constant development and
>>     get broken every other day.
>>
>>
>> I use Org with Guile 2.2.3 (via Geiser), and it seems a pretty stable
>> setup to me.
>>  
>> Best wishes,
>>      Neil
>>  


A particularl example could be, perhaps, when an interpreter crashes and
produces something like "Segmentation fault", which is not a valid
geiser-sexp.

[-- Attachment #2: pEpkey.asc --]
[-- Type: application/pgp-keys, Size: 1799 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-10-22  1:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-21  2:19 Bug: Problems with ob-scheme in geiser-eval--retort-output [9.2.6 (9.2.6-4-ge30905-elpa @ /home/lockywolf/.emacs.d/elpa/org-20191021/)] Vladimir Nikishkin
2019-10-21 10:42 ` Neil Jerram
     [not found]   ` <c62d8deb-1ef7-378a-60f5-b7775f34a6d5@gmail.com>
2019-10-21 14:46     ` Neil Jerram
     [not found]       ` <80649399-906c-76fd-dd0e-2040fd62f9de@gmail.com>
2019-10-22  1:35         ` Vladimir Nikishkin

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.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).