unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
@ 2021-09-19  0:32 Michael-David Fiszer
  2021-09-19  9:10 ` Augusto Stoffel
  2022-08-26 11:46 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 10+ messages in thread
From: Michael-David Fiszer @ 2021-09-19  0:32 UTC (permalink / raw)
  To: 50669

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

Hi,

I'm not an expert in how python.el internals work, but I started getting
this error every time I would send a statement to the shell. In addition I
would get these weird printouts of blocks of the form

```
  def __PYDOC_get_help(obj):
    try:
        import inspect
        try:
            str_type = basestring
            argspec_function = inspect.getargspec
        except NameError:
            str_type = str
```

while just moving the point in my .py file.

My current workaround was to simply override python-shell-send-string from
28.0.50 with the one I had with my emacs 27 version, which was:

```
(defun python-shell-send-string (string &optional process msg)
  "Send STRING to inferior Python PROCESS.
When optional argument MSG is non-nil, forces display of a
user-friendly message if there's no process running; defaults to
t when called interactively."
  (interactive
   (list (read-string "Python command: ") nil t))
  (let ((process (or process (python-shell-get-process-or-error msg))))
    (if (string-match ".\n+." string)   ;Multiline.
        (let* ((temp-file-name (python-shell--save-temp-file string))
               (file-name (or (buffer-file-name) temp-file-name)))
          (python-shell-send-file file-name process temp-file-name t))
      (when (or (not (string-match "\n\\'" string))
                (string-match "\n[ \t].*\n?\\'" string))
        (comint-send-string process "\n")))))
```

And this seems to solve the problem...


In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin20.6.0, NS appkit-2022.60
Version 11.6 (Build 20G165))
 of 2021-09-17 built on mdfz-macbookpro4.roam.corp.google.com
Windowing system distributor 'Apple', version 10.3.2022
System Description:  macOS 11.6

Configured using:
 'configure --disable-dependency-tracking --disable-silent-rules
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs-plus@28/28.0.50/share/info/emacs
 --prefix=/usr/local/Cellar/emacs-plus@28/28.0.50 --with-xml2 --with-gnutls
 --without-dbus --with-imagemagick --with-modules --with-rsvg --with-ns
 --disable-ns-self-contained'

Configured features:
ACL GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY
KQUEUE NS
PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS XIM ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: mu4e-headers

Memory information:
((conses 16 1905022 1639005)
 (symbols 48 123242 97)
 (strings 32 433582 151543)
 (string-bytes 1 14825386)
 (vectors 16 192606)
 (vector-slots 8 3165377 831342)
 (floats 8 1100 6586)
 (intervals 56 34684 19693)
 (buffers 992 60))

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

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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  0:32 bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error Michael-David Fiszer
@ 2021-09-19  9:10 ` Augusto Stoffel
  2021-09-19  9:28   ` Michael-David Fiszer
  2022-08-26 11:46 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 10+ messages in thread
From: Augusto Stoffel @ 2021-09-19  9:10 UTC (permalink / raw)
  To: Michael-David Fiszer; +Cc: 50669

On Sun, 19 Sep 2021 at 03:32, Michael-David Fiszer <sguibor@gmail.com> wrote:

> Hi,

Hi,

Can you try 'M-x toggle-debug-on-error', or maybe tracing some
functions, to discover what is being called repeatedly?

Also, what happens if you (setq python-eldoc-get-doc nil) in the .py
file's buffer?

Some more macos-related things that would be helpful to know:

* On a freshly started python-shell, is are the functions
  __PYTHON_EL_eval and __PYTHON_EL_eval_file defined?

* If you do M-x python-shell-send-string RET x="aaa...aaa" or something
  like that, can you evaluate Python statements that are, say, 900 and
  1100 characters long?


>
> I'm not an expert in how python.el internals work, but I started getting this error every time I would
> send a statement to the shell. In addition I would get these weird printouts of blocks of the form
>
> ```
>   def __PYDOC_get_help(obj):
>     try:
>         import inspect
>         try:
>             str_type = basestring
>             argspec_function = inspect.getargspec
>         except NameError:
>             str_type = str
> ```
>
> while just moving the point in my .py file.
>
> My current workaround was to simply override python-shell-send-string from 28.0.50 with the one
> I had with my emacs 27 version, which was:
>
> ```
> (defun python-shell-send-string (string &optional process msg)
>   "Send STRING to inferior Python PROCESS.
> When optional argument MSG is non-nil, forces display of a
> user-friendly message if there's no process running; defaults to
> t when called interactively."
>   (interactive
>    (list (read-string "Python command: ") nil t))
>   (let ((process (or process (python-shell-get-process-or-error msg))))
>     (if (string-match ".\n+." string)   ;Multiline.
>         (let* ((temp-file-name (python-shell--save-temp-file string))
>                (file-name (or (buffer-file-name) temp-file-name)))
>           (python-shell-send-file file-name process temp-file-name t))
>       (when (or (not (string-match "\n\\'" string))
>                 (string-match "\n[ \t].*\n?\\'" string))
>         (comint-send-string process "\n")))))
> ```
>
> And this seems to solve the problem...
>
> In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin20.6.0, NS appkit-2022.60 Version 11.6
> (Build 20G165))
>  of 2021-09-17 built on mdfz-macbookpro4.roam.corp.google.com
> Windowing system distributor 'Apple', version 10.3.2022
> System Description:  macOS 11.6
>
> Configured using:
>  'configure --disable-dependency-tracking --disable-silent-rules
>  --enable-locallisppath=/usr/local/share/emacs/site-lisp
>  --infodir=/usr/local/Cellar/emacs-plus@28/28.0.50/share/info/emacs
>  --prefix=/usr/local/Cellar/emacs-plus@28/28.0.50 --with-xml2 --with-gnutls
>  --without-dbus --with-imagemagick --with-modules --with-rsvg --with-ns
>  --disable-ns-self-contained'
>
> Configured features:
> ACL GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE
> NS
> PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS XIM ZLIB
>
> Important settings:
>   value of $LC_ALL: en_US.UTF-8
>   value of $LC_CTYPE: en_US.UTF-8
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: mu4e-headers
>
> Memory information:
> ((conses 16 1905022 1639005)
>  (symbols 48 123242 97)
>  (strings 32 433582 151543)
>  (string-bytes 1 14825386)
>  (vectors 16 192606)
>  (vector-slots 8 3165377 831342)
>  (floats 8 1100 6586)
>  (intervals 56 34684 19693)
>  (buffers 992 60))





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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  9:10 ` Augusto Stoffel
@ 2021-09-19  9:28   ` Michael-David Fiszer
  2021-09-19  9:42     ` Augusto Stoffel
  2021-09-19 10:36     ` Michael-David Fiszer
  0 siblings, 2 replies; 10+ messages in thread
From: Michael-David Fiszer @ 2021-09-19  9:28 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50669

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

Hi!

Thanks for the response!

I'll fill in the details shortly. I wanted to add to the bug, that the
functions being called repeatedly were `python-shell-send-string` and
`python-shell-send-file`.

They call one another and create more and more temporary files before I get
the recursion error.

As a side note, python.el really rocks. Thanks so much for the amazing work.

On Sun, Sep 19, 2021 at 12:10 PM Augusto Stoffel <arstoffel@gmail.com>
wrote:

> On Sun, 19 Sep 2021 at 03:32, Michael-David Fiszer <sguibor@gmail.com>
> wrote:
>
> > Hi,
>
> Hi,
>
> Can you try 'M-x toggle-debug-on-error', or maybe tracing some
> functions, to discover what is being called repeatedly?
>
> Also, what happens if you (setq python-eldoc-get-doc nil) in the .py
> file's buffer?
>

I'll try this asap. I thought it was eldoc, but then tried turning off
'eldoc-mode' off and I still had the same problem with the infinite
recursion (and I think I still saw the weird PYDOC strings, but not sure).

But I will try this today.


>
> Some more macos-related things that would be helpful to know:
>
> * On a freshly started python-shell, is are the functions
>   __PYTHON_EL_eval and __PYTHON_EL_eval_file defined?
>

I just checked, and they both are.

<function __main__.__PYTHON_EL_eval(source, filename)>
<function __main__.__PYTHON_EL_eval_file(filename, tempname, delete)>

>
> * If you do M-x python-shell-send-string RET x="aaa...aaa" or something
>   like that, can you evaluate Python statements that are, say, 900 and
>   1100 characters long?


Will try this immediately

>


>
> >
> > I'm not an expert in how python.el internals work, but I started getting
> this error every time I would
> > send a statement to the shell. In addition I would get these weird
> printouts of blocks of the form
> >
> > ```
> >   def __PYDOC_get_help(obj):
> >     try:
> >         import inspect
> >         try:
> >             str_type = basestring
> >             argspec_function = inspect.getargspec
> >         except NameError:
> >             str_type = str
> > ```
> >
> > while just moving the point in my .py file.
> >
> > My current workaround was to simply override python-shell-send-string
> from 28.0.50 with the one
> > I had with my emacs 27 version, which was:
> >
> > ```
> > (defun python-shell-send-string (string &optional process msg)
> >   "Send STRING to inferior Python PROCESS.
> > When optional argument MSG is non-nil, forces display of a
> > user-friendly message if there's no process running; defaults to
> > t when called interactively."
> >   (interactive
> >    (list (read-string "Python command: ") nil t))
> >   (let ((process (or process (python-shell-get-process-or-error msg))))
> >     (if (string-match ".\n+." string)   ;Multiline.
> >         (let* ((temp-file-name (python-shell--save-temp-file string))
> >                (file-name (or (buffer-file-name) temp-file-name)))
> >           (python-shell-send-file file-name process temp-file-name t))
> >       (when (or (not (string-match "\n\\'" string))
> >                 (string-match "\n[ \t].*\n?\\'" string))
> >         (comint-send-string process "\n")))))
> > ```
> >
> > And this seems to solve the problem...
> >
> > In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin20.6.0, NS
> appkit-2022.60 Version 11.6
> > (Build 20G165))
> >  of 2021-09-17 built on mdfz-macbookpro4.roam.corp.google.com
> > Windowing system distributor 'Apple', version 10.3.2022
> > System Description:  macOS 11.6
> >
> > Configured using:
> >  'configure --disable-dependency-tracking --disable-silent-rules
> >  --enable-locallisppath=/usr/local/share/emacs/site-lisp
> >  --infodir=/usr/local/Cellar/emacs-plus@28/28.0.50/share/info/emacs
> >  --prefix=/usr/local/Cellar/emacs-plus@28/28.0.50 --with-xml2
> --with-gnutls
> >  --without-dbus --with-imagemagick --with-modules --with-rsvg --with-ns
> >  --disable-ns-self-contained'
> >
> > Configured features:
> > ACL GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY
> KQUEUE
> > NS
> > PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS XIM ZLIB
> >
> > Important settings:
> >   value of $LC_ALL: en_US.UTF-8
> >   value of $LC_CTYPE: en_US.UTF-8
> >   value of $LANG: en_US.UTF-8
> >   locale-coding-system: utf-8-unix
> >
> > Major mode: mu4e-headers
> >
> > Memory information:
> > ((conses 16 1905022 1639005)
> >  (symbols 48 123242 97)
> >  (strings 32 433582 151543)
> >  (string-bytes 1 14825386)
> >  (vectors 16 192606)
> >  (vector-slots 8 3165377 831342)
> >  (floats 8 1100 6586)
> >  (intervals 56 34684 19693)
> >  (buffers 992 60))
>

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

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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  9:28   ` Michael-David Fiszer
@ 2021-09-19  9:42     ` Augusto Stoffel
  2021-09-19  9:52       ` Michael-David Fiszer
  2021-09-19 10:36     ` Michael-David Fiszer
  1 sibling, 1 reply; 10+ messages in thread
From: Augusto Stoffel @ 2021-09-19  9:42 UTC (permalink / raw)
  To: Michael-David Fiszer; +Cc: 50669

On Sun, 19 Sep 2021 at 12:28, Michael-David Fiszer <sguibor@gmail.com> wrote:

> Hi!
>
> Thanks for the response!
>
> I'll fill in the details shortly. I wanted to add to the bug, that the functions being called repeatedly
> were `python-shell-send-string` and `python-shell-send-file`.
>
> They call one another and create more and more temporary files before I get the recursion error.
>

Are you on the current master?  These two functions used to be
entangled, but now only -send-string calls -send-file.





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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  9:42     ` Augusto Stoffel
@ 2021-09-19  9:52       ` Michael-David Fiszer
  0 siblings, 0 replies; 10+ messages in thread
From: Michael-David Fiszer @ 2021-09-19  9:52 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50669

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

You are right. They are not calling one another (python-shell-send-file
calls comint). I think that it may that something is making them be called
one after another (my bad).

Backtrace looks like this (I changed the file name to `a_file_name` since
it's a company path)

  string-match-p("magit-.*: .*" "rider_now_utils.py")
  (not (string-match-p useless-regexp buf-name))
  (setq --cl-flag-- (not (string-match-p useless-regexp buf-name)))
  (progn (setq useless-regexp (car --cl-var--)) (setq --cl-flag-- (not
(string-match-p useless-regexp buf-name))))
  (and (consp --cl-var--) (progn (setq useless-regexp (car --cl-var--))
(setq --cl-flag-- (not (string-match-p useless-regexp buf-name)))))
  (while (and (consp --cl-var--) (progn (setq useless-regexp (car
--cl-var--)) (setq --cl-flag-- (not (string-match-p useless-regexp
buf-name))))) (setq --cl-var-- (cdr --cl-var--)))
  (let* ((--cl-var-- spacemacs-useless-buffers-regexp) (useless-regexp nil)
(--cl-flag-- t)) (while (and (consp --cl-var--) (progn (setq useless-regexp
(car --cl-var--)) (setq --cl-flag-- (not (string-match-p useless-regexp
buf-name))))) (setq --cl-var-- (cdr --cl-var--))) (if --cl-flag-- (progn t)
nil))
  (or (provided-mode-derived-p (buffer-local-value 'major-mode buffer)
'comint-mode) (let* ((--cl-var-- spacemacs-useful-buffers-regexp)
(useful-regexp nil) (--cl-flag-- t) --cl-var--) (while (and (consp
--cl-var--) (progn (setq useful-regexp (car --cl-var--)) (setq --cl-flag--
(not (setq --cl-var-- ...))))) (setq --cl-var-- (cdr --cl-var--)))
--cl-var--) (let* ((--cl-var-- spacemacs-useless-buffers-regexp)
(useless-regexp nil) (--cl-flag-- t)) (while (and (consp --cl-var--) (progn
(setq useless-regexp (car --cl-var--)) (setq --cl-flag-- (not
(string-match-p useless-regexp buf-name))))) (setq --cl-var-- (cdr
--cl-var--))) (if --cl-flag-- (progn t) nil)))
  (let ((buf-name (buffer-name buffer))) (or (provided-mode-derived-p
(buffer-local-value 'major-mode buffer) 'comint-mode) (let* ((--cl-var--
spacemacs-useful-buffers-regexp) (useful-regexp nil) (--cl-flag-- t)
--cl-var--) (while (and (consp --cl-var--) (progn (setq useful-regexp (car
--cl-var--)) (setq --cl-flag-- (not ...)))) (setq --cl-var-- (cdr
--cl-var--))) --cl-var--) (let* ((--cl-var--
spacemacs-useless-buffers-regexp) (useless-regexp nil) (--cl-flag-- t))
(while (and (consp --cl-var--) (progn (setq useless-regexp (car
--cl-var--)) (setq --cl-flag-- (not ...)))) (setq --cl-var-- (cdr
--cl-var--))) (if --cl-flag-- (progn t) nil))))
  spacemacs/useful-buffer-p(#<buffer rider_now_utils.py>)
  kill-buffer(#<buffer  *temp*-957895>)
  #f(compiled-function () #<bytecode -0x1c1e1505371ddc2b>)()
  python-shell-send-file("a_file_name..." #<process Python>
"/var/folders/gx/6fqj2t4x5tn4zml2qp9__9mr00j58f/T/p..." t)
  #f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>)("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>)
  apply(#f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>) ("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>))
  python-shell-send-string("import sys, codecs, os, ast;__pyfile =
codecs.open..." #<process Python>)
  python-shell-send-file("a_file_name..." #<process Python>
"/var/folders/gx/6fqj2t4x5tn4zml2qp9__9mr00j58f/T/p..." t)
  #f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>)("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>)
  apply(#f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>) ("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>))
  python-shell-send-string("import sys, codecs, os, ast;__pyfile =
codecs.open..." #<process Python>)
  python-shell-send-file("a_file_name..." #<process Python>
"/var/folders/gx/6fqj2t4x5tn4zml2qp9__9mr00j58f/T/p..." t)
  #f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>)("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>)
  apply(#f(compiled-function (string &optional process msg) "Send STRING to
inferior Python PROCESS.\nWhen optional argument MSG is non-nil, forces
display of a\nuser-friendly message if there's no process running; defaults
to\nt when called interactively." (interactive #f(compiled-function ()
#<bytecode 0x14ff04c703dd2bc5>)) #<bytecode -0x168dce9d6e1d8f8e>) ("import
sys, codecs, os, ast;__pyfile = codecs.open..." #<process Python>))
  python-shell-send-string("import sys, codecs, os, ast;__pyfile =
codecs.open..." #<process Python>)
  python-shell-send-file("a_file_name..." #<process Python>
"/var/folders/gx/6fqj2t4x5tn4zml2qp9__9mr00j58f/T/p..." t)



On Sun, Sep 19, 2021 at 12:42 PM Augusto Stoffel <arstoffel@gmail.com>
wrote:

> On Sun, 19 Sep 2021 at 12:28, Michael-David Fiszer <sguibor@gmail.com>
> wrote:
>
> > Hi!
> >
> > Thanks for the response!
> >
> > I'll fill in the details shortly. I wanted to add to the bug, that the
> functions being called repeatedly
> > were `python-shell-send-string` and `python-shell-send-file`.
> >
> > They call one another and create more and more temporary files before I
> get the recursion error.
> >
>
> Are you on the current master?  These two functions used to be
> entangled, but now only -send-string calls -send-file.
>

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

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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  9:28   ` Michael-David Fiszer
  2021-09-19  9:42     ` Augusto Stoffel
@ 2021-09-19 10:36     ` Michael-David Fiszer
  2021-09-19 16:12       ` Augusto Stoffel
  1 sibling, 1 reply; 10+ messages in thread
From: Michael-David Fiszer @ 2021-09-19 10:36 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50669

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

Adding more details. BTW, no issues at all (none of the two, as it looks
like there may be two different issues) if I just do:

(advice-add 'python-shell-send-string :override
#'python-shell-send-string27)

where 'python-shell-send-string27 is the python-shell-send-string function
from emacs 27.2.

(regarding the backtrace, I realize it's hard to read - is there a better
way to send it formatted in this thread?)


On Sun, Sep 19, 2021 at 12:28 PM Michael-David Fiszer <sguibor@gmail.com>
wrote:

> Hi!
>
> Thanks for the response!
>
> I'll fill in the details shortly. I wanted to add to the bug, that the
> functions being called repeatedly were `python-shell-send-string` and
> `python-shell-send-file`.
>
> They call one another and create more and more temporary files before I
> get the recursion error.
>
> As a side note, python.el really rocks. Thanks so much for the amazing
> work.
>
> On Sun, Sep 19, 2021 at 12:10 PM Augusto Stoffel <arstoffel@gmail.com>
> wrote:
>
>> On Sun, 19 Sep 2021 at 03:32, Michael-David Fiszer <sguibor@gmail.com>
>> wrote:
>>
>> > Hi,
>>
>> Hi,
>>
>> Can you try 'M-x toggle-debug-on-error', or maybe tracing some
>> functions, to discover what is being called repeatedly?
>>
>> Also, what happens if you (setq python-eldoc-get-doc nil) in the .py
>> file's buffer?
>>
>
> I'll try this asap. I thought it was eldoc, but then tried turning off
> 'eldoc-mode' off and I still had the same problem with the infinite
> recursion (and I think I still saw the weird PYDOC strings, but not sure).
>
> But I will try this today.
>

This did not change anything to the nested lisp error, but does remove the
prints of "def __PYDOC_get_help(obj)". So it looks like there may have been
two different issues here.

>
>
>>
>> Some more macos-related things that would be helpful to know:
>>
>> * On a freshly started python-shell, is are the functions
>>   __PYTHON_EL_eval and __PYTHON_EL_eval_file defined?
>>
>
> I just checked, and they both are.
>
> <function __main__.__PYTHON_EL_eval(source, filename)>
> <function __main__.__PYTHON_EL_eval_file(filename, tempname, delete)>
>
>>
>> * If you do M-x python-shell-send-string RET x="aaa...aaa" or something
>>   like that, can you evaluate Python statements that are, say, 900 and
>>   1100 characters long?
>
>
> Will try this immediately
>

So, interesting, if I write

x = "aaa....a" in my py file (calling python-shell-send-string
interactively doesn't work like that, shoud it?), it works for len(x) = 422
and not for len(x)=423 (same error "nesting exceeds").


>
>
>
>>
>> >
>> > I'm not an expert in how python.el internals work, but I started
>> getting this error every time I would
>> > send a statement to the shell. In addition I would get these weird
>> printouts of blocks of the form
>> >
>> > ```
>> >   def __PYDOC_get_help(obj):
>> >     try:
>> >         import inspect
>> >         try:
>> >             str_type = basestring
>> >             argspec_function = inspect.getargspec
>> >         except NameError:
>> >             str_type = str
>> > ```
>> >
>> > while just moving the point in my .py file.
>> >
>> > My current workaround was to simply override python-shell-send-string
>> from 28.0.50 with the one
>> > I had with my emacs 27 version, which was:
>> >
>> > ```
>> > (defun python-shell-send-string (string &optional process msg)
>> >   "Send STRING to inferior Python PROCESS.
>> > When optional argument MSG is non-nil, forces display of a
>> > user-friendly message if there's no process running; defaults to
>> > t when called interactively."
>> >   (interactive
>> >    (list (read-string "Python command: ") nil t))
>> >   (let ((process (or process (python-shell-get-process-or-error msg))))
>> >     (if (string-match ".\n+." string)   ;Multiline.
>> >         (let* ((temp-file-name (python-shell--save-temp-file string))
>> >                (file-name (or (buffer-file-name) temp-file-name)))
>> >           (python-shell-send-file file-name process temp-file-name t))
>> >       (when (or (not (string-match "\n\\'" string))
>> >                 (string-match "\n[ \t].*\n?\\'" string))
>> >         (comint-send-string process "\n")))))
>> > ```
>> >
>> > And this seems to solve the problem...
>> >
>> > In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin20.6.0, NS
>> appkit-2022.60 Version 11.6
>> > (Build 20G165))
>> >  of 2021-09-17 built on mdfz-macbookpro4.roam.corp.google.com
>> > Windowing system distributor 'Apple', version 10.3.2022
>> > System Description:  macOS 11.6
>> >
>> > Configured using:
>> >  'configure --disable-dependency-tracking --disable-silent-rules
>> >  --enable-locallisppath=/usr/local/share/emacs/site-lisp
>> >  --infodir=/usr/local/Cellar/emacs-plus@28/28.0.50/share/info/emacs
>> >  --prefix=/usr/local/Cellar/emacs-plus@28/28.0.50 --with-xml2
>> --with-gnutls
>> >  --without-dbus --with-imagemagick --with-modules --with-rsvg --with-ns
>> >  --disable-ns-self-contained'
>> >
>> > Configured features:
>> > ACL GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY
>> KQUEUE
>> > NS
>> > PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS XIM ZLIB
>> >
>> > Important settings:
>> >   value of $LC_ALL: en_US.UTF-8
>> >   value of $LC_CTYPE: en_US.UTF-8
>> >   value of $LANG: en_US.UTF-8
>> >   locale-coding-system: utf-8-unix
>> >
>> > Major mode: mu4e-headers
>> >
>> > Memory information:
>> > ((conses 16 1905022 1639005)
>> >  (symbols 48 123242 97)
>> >  (strings 32 433582 151543)
>> >  (string-bytes 1 14825386)
>> >  (vectors 16 192606)
>> >  (vector-slots 8 3165377 831342)
>> >  (floats 8 1100 6586)
>> >  (intervals 56 34684 19693)
>> >  (buffers 992 60))
>>
>

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

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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19 10:36     ` Michael-David Fiszer
@ 2021-09-19 16:12       ` Augusto Stoffel
  2021-09-21 21:17         ` Michael-David Fiszer
  0 siblings, 1 reply; 10+ messages in thread
From: Augusto Stoffel @ 2021-09-19 16:12 UTC (permalink / raw)
  To: Michael-David Fiszer; +Cc: 50669

Hi David,

So, I think the main thing is to figure out which functions are calling
themselves recursively.  'python-shell-send-file' doesn't call
'python-shell-send-string' anymore, so that can't be it (are you sure
you are using today's master branch?).

Another crazy attempt would be this:

     (let ((process-connection-type nil)
           (python-shell-completion-native-enable nil))
       (run-python))

Nevermind the initial warnings, does it work for you afterwards?





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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19 16:12       ` Augusto Stoffel
@ 2021-09-21 21:17         ` Michael-David Fiszer
  0 siblings, 0 replies; 10+ messages in thread
From: Michael-David Fiszer @ 2021-09-21 21:17 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50669

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

Hi!

- I'm pretty sure I'm on the master branch. I don't clone from git, but I
compared my version of python.el with this
https://github.com/emacs-mirror/emacs/commit/6cfc312d7196d7c7c70e7030b344891ecea8c4f1#diff-f808b0589744f83f41d9f581e8b07001145598d2a2aa07fd40c1d20ee35df762
and it looks up to date.

- Regarding the recursive calls, I tried to look into it, and what I found
was very confusing.
  - The tests I sent on number of characters, I believe establish that the
issue only arises when the string is long enough for
python-shell-send-string to save to a file and call python-shell-send file.
  - The backtrace - I sent to you. I suppose it's hard to decipher.
  - I then tried setting a breakpoint in 'python-shell-send-string. If I
step through commands there, I see myself looping through this function
again and again (creating more and more files, which is eventually what
leads to the error). Buf *if* I step into 'python-shell-send-file when
going through the difference expressions of 'python-shell-send-string, I
get into the function (which indeed calls 'comint-send-string, not
'python-shell-send-string... and at this point, instead of returning to the
*beginning* of python-shell-send string, I end up exiting
python-shell-send-string and everything works.
      - In other words, the problem does not arise in edebug mode *if* I
step into python-shell-send-file when python-shell-send-string calls it.

This is very weird, sounds like perhaps some async issue... Very odd.

On Sun, Sep 19, 2021 at 7:13 PM Augusto Stoffel <arstoffel@gmail.com> wrote:

> Hi David,
>
> So, I think the main thing is to figure out which functions are calling
> themselves recursively.  'python-shell-send-file' doesn't call
> 'python-shell-send-string' anymore, so that can't be it (are you sure
> you are using today's master branch?).
>
> Another crazy attempt would be this:
>
>      (let ((process-connection-type nil)
>            (python-shell-completion-native-enable nil))
>        (run-python))
>
> Nevermind the initial warnings, does it work for you afterwards?
>

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

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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2021-09-19  0:32 bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error Michael-David Fiszer
  2021-09-19  9:10 ` Augusto Stoffel
@ 2022-08-26 11:46 ` Lars Ingebrigtsen
  2022-09-24 14:59   ` Lars Ingebrigtsen
  1 sibling, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-26 11:46 UTC (permalink / raw)
  To: Michael-David Fiszer; +Cc: 50669

Michael-David Fiszer <sguibor@gmail.com> writes:

> I'm not an expert in how python.el internals work, but I started
> getting this error every time I would send a statement to the
> shell. In addition I would get these weird printouts of blocks of the
> form

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

Are you still seeing these issues with the current Emacs "master"
branch?  There's been quite a lot of work done in this area over the
last year.






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

* bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error
  2022-08-26 11:46 ` Lars Ingebrigtsen
@ 2022-09-24 14:59   ` Lars Ingebrigtsen
  0 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2022-09-24 14:59 UTC (permalink / raw)
  To: Michael-David Fiszer; +Cc: 50669

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Are you still seeing these issues with the current Emacs "master"
> branch?  There's been quite a lot of work done in this area over the
> last year.

More information was requested, but no response was given within a
month, so I'm closing this bug report.  If the problem still exists,
please respond to this email and we'll reopen the bug report.





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

end of thread, other threads:[~2022-09-24 14:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-19  0:32 bug#50669: 28.0.50; python-shell-send-string leads to "nesting exceeds `max-lisp-eval-depth`" error Michael-David Fiszer
2021-09-19  9:10 ` Augusto Stoffel
2021-09-19  9:28   ` Michael-David Fiszer
2021-09-19  9:42     ` Augusto Stoffel
2021-09-19  9:52       ` Michael-David Fiszer
2021-09-19 10:36     ` Michael-David Fiszer
2021-09-19 16:12       ` Augusto Stoffel
2021-09-21 21:17         ` Michael-David Fiszer
2022-08-26 11:46 ` Lars Ingebrigtsen
2022-09-24 14:59   ` Lars Ingebrigtsen

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