Re: [O] 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 Thread Vladimir Nikishkin


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 > > 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.


pEpkey.asc
Description: application/pgp-keys


Re: [O] 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 Thread Neil Jerram
On Mon, 21 Oct 2019 at 15:16, Vladimir Nikishkin 
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


Re: [O] 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 Thread Neil Jerram
Hi Vladimir,

On Mon, 21 Oct 2019 at 03:21, Vladimir Nikishkin 
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


[O] 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-20 Thread Vladimir Nikishkin



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 "https://www.gnu.org/software/emacs/\;>Emacs 26.3 (https://orgmode.org\;>Org 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")