unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / Atom feed
* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
@ 2021-02-22 22:22 Ryan Olson
  2021-02-22 22:36 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 6+ messages in thread
From: Ryan Olson @ 2021-02-22 22:22 UTC (permalink / raw)
  To: 46713

In GNU Emacs 27.1 (build 1, x86_64-apple-darwin18.7.0, NS
appkit-1671.60 Version 10.14.6 (Build 18G95))
 of 2020-08-11 built on builder10-14.porkrind.org
Windowing system distributor 'Apple', version 10.3.1894
System Description:  Mac OS X 10.15.7

Recent messages:
Wrote /Users/CENSORED/CENSORED/src/CENSORED/CENSORED/CENSORED.js
Quit
2 (#o2, #x2, ?\C-b)
Saving file /Users/CENSORED/CENSORED/src/CENSORED/CENSORED/CENSORED.js...
Wrote /Users/CENSORED/CENSORED/src/CENSORED/CENSORED/CENSORED.js
Error during redisplay: (internal--syntax-propertize 2120) signaled
(error "Variable binding depth exceeds max-specpdl-size")
back-to-indentation: internal--syntax-propertize did not move
syntax-propertize--doneError during redisplay:
(internal--syntax-propertize 2645) signaled (error "Variable binding
depth exceeds max-specpdl-size")
Error during redisplay: (jit-lock-function 2121) signaled (error
"internal--syntax-propertize did not move syntax-propertize--done")
Error during redisplay: (jit-lock-function 3138) signaled (error
"Variable binding depth exceeds max-specpdl-size")
Error during redisplay: (jit-lock-function 3638) signaled (error
"Variable binding depth exceeds max-specpdl-size")

Configured using:
 'configure --with-ns '--enable-locallisppath=/Library/Application
 Support/Emacs/${version}/site-lisp:/Library/Application
 Support/Emacs/site-lisp' --with-modules'

Configured features:
NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES
THREADS JSON PDUMPER

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

Major mode: JavaScript[JSX]

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config
gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date
vc-git diff-mode easy-mmode js json subr-x map seq byte-opt gv bytecomp
byte-compile cconv imenu cc-mode cc-fonts easymenu cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite charscript charprop case-table epa-hook jka-cmpr-hook help
simple abbrev obarray cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
threads kqueue cocoa ns multi-tty make-network-process emacs)

Memory information:
((conses 16 77539 14591)
 (symbols 48 9435 1)
 (strings 32 25046 1242)
 (string-bytes 1 941698)
 (vectors 16 13840)
 (vector-slots 8 178575 12426)
 (floats 8 30 274)
 (intervals 56 717 4)
 (buffers 1000 13))





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

* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
  2021-02-22 22:22 bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line Ryan Olson
@ 2021-02-22 22:36 ` Lars Ingebrigtsen
  2021-02-23  2:03   ` Ryan Olson
  0 siblings, 1 reply; 6+ messages in thread
From: Lars Ingebrigtsen @ 2021-02-22 22:36 UTC (permalink / raw)
  To: Ryan Olson; +Cc: 46713

Ryan Olson <ryan.olson.x@gmail.com> writes:

> (error "Variable binding depth exceeds max-specpdl-size")
> back-to-indentation: internal--syntax-propertize did not move
> syntax-propertize--doneError during redisplay:
> (internal--syntax-propertize 2645) signaled (error "Variable binding
> depth exceeds max-specpdl-size")

Do you have a recipe to reproduce this error, starting from "emacs -Q"?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
  2021-02-22 22:36 ` Lars Ingebrigtsen
@ 2021-02-23  2:03   ` Ryan Olson
  2021-02-23 15:36     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 6+ messages in thread
From: Ryan Olson @ 2021-02-23  2:03 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 46713

Hi Lars,

I do. I'm not sure why it takes this, but for my specific js file
(with a few things replaced -- because it's company code) it has
issues.

Repro steps:
1. Open foo.js with emacs -Q --eval '(setq-default js-indent-level 2
indent-tabs-mode nil)' foo.js
2. Go to line 61
3. Delete brace at end of that line
4. Save
5. Add brace back
6. Press RET
7. Errors happen

foo.js:
import React, { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useHistory } from 'react-router';
import { Link } from 'react-router-dom';
import { Grid } from '@rmwc/grid';

import {
  getFoos,
  selectFoos,
  selectIsLoadingFoos,
  selectTotalTimesFoosFetched,
} from 'store/slices/foos.slice';
import { clearFoo } from 'store/slices/foo.slice';
import {
  filterDefinitions,
  getUniqueFooKey,
  searchProperties,
  getFeaturesForFoo,
} from './foosHelpers';
import { useFilters } from 'components/Filtering/useFilters';
import Fab from 'components/Fab';
import SortableDataTable from 'components/SortableDataTable';
import FilterBar from 'components/Filtering/FilterBar';
import useUpdateEffect from 'hooks/useUpdateEffect';

export default function FoosList() {
  const dispatch = useDispatch();
  const history = useHistory();
  const isLoading = useSelector(selectIsLoadingFoos);
  const foos = useSelector(selectFoos);
  const totalTimesFoosFetched = useSelector(
    selectTotalTimesFoosFetched
  );
  const filterBag = useFilters(
    'foos',
    foos,
    filterDefinitions,
    searchProperties
  );
  const { getFilterByKey, clearFilter } = filterBag;

  const canAddFoo = useSelector(state => state.permissions.canAddFoo);

  function requestFoos() {
    dispatch(getFoos({ dispatch }));
  }

  // Get foos from the server (if needed).
  // It attempts to skip reloading the foos, when it can.
  useEffect(() => {
    const isFirstLoad = totalTimesFoosFetched === 0;
    // Since we're only checking this on mount, I think
    // it's safe to say that if we don't have foos and it's
    // not our first load (while mounting), then this would be a
    // place where we've invalidated foos by clearing them out.
    // (to force a load)
    const foosInvalidated = !isFirstLoad && foos.length === 0;

    const shouldFetch = isFirstLoad || foosInvalidated;

    if (shouldFetch) {
      requestFoos();
    }
  }, []);

  // When show foos filter changes,
  // get foos from the server.
  useUpdateEffect(() => {
    requestFoos();
  }, []);

  // Clear foo data from redux.
  useEffect(() => {
    // Clear foo itself.
    dispatch(clearFoo());
  }, []);

  // If we initially load foos and none come back that follow
  // our initial filter (only show centralized foos == true)
  // Remove that filter and fetch foos again.
  useEffect(() => {
    if (totalTimesFoosFetched === 1 && foos.length === 0) {
      // NOTE: this triggers a different effect to get foos that
      // match this filter.
      clearFilter();
    }
  }, [foos, totalTimesFoosFetched]);

  function getFooLink(foo) {
    if (hasValue(foo.fooCode)) {
      return `/foos/foo/fooCode/${foo.fooCode}`;
    }

    if (foo(foo)) {
      return `/foos/foo//${foo.id}`;
    }

    // Shouldn't get here. If all else fails, it shouldn't route anywhere.
    return '#';
  }

  return (
    <Grid>
      <FilterBar filterBag={filterBag}>
        < />
      </FilterBar>
      <SortableDataTable
        data={filterBag.filteredData}
        isLoading={isLoading}
        noRowsMessage="No foos to display."
        schema={{
          getRowKey: getUniqueFooKey,
          columns: [
            {
              headerName: 'Foo Name',
              getColumnValue: foo => (
                <Link
                  to={getFooLink(foo)}
                  className={sharedCss.colorPrimary}
                >
                  {foo.fooName}
                </Link>
              ),
              getSortValue: foo => foo.fooName,
            },
            {
              headerName: 'Foo Code',
              getColumnValue: foo => foo.fooCode,
              className: globalCss.width100,
            },
            {
              headerName: 'Site ID',
              // If there's no site id, it comes down as 0.
              getColumnValue: foo => foo.siteId || null,
              className: globalCss.width100,
            },
            {
              headerName: 'Master Foo ID',
              getColumnValue: foo => foo.id,
              className: globalCss.width100,
            },
          ].filter(Boolean),
        }}
      />
      {canAddFoo && (
        <Fab icon="add" onClick={() => history.push('/foos/new')} />
      )}
    </Grid>
  );
}

On Mon, Feb 22, 2021 at 3:36 PM Lars Ingebrigtsen <larsi@gnus.org> wrote:
>
> Ryan Olson <ryan.olson.x@gmail.com> writes:
>
> > (error "Variable binding depth exceeds max-specpdl-size")
> > back-to-indentation: internal--syntax-propertize did not move
> > syntax-propertize--doneError during redisplay:
> > (internal--syntax-propertize 2645) signaled (error "Variable binding
> > depth exceeds max-specpdl-size")
>
> Do you have a recipe to reproduce this error, starting from "emacs -Q"?
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no





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

* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
  2021-02-23  2:03   ` Ryan Olson
@ 2021-02-23 15:36     ` Lars Ingebrigtsen
  2021-02-23 16:31       ` Ryan Olson
  0 siblings, 1 reply; 6+ messages in thread
From: Lars Ingebrigtsen @ 2021-02-23 15:36 UTC (permalink / raw)
  To: Ryan Olson; +Cc: 46713

Ryan Olson <ryan.olson.x@gmail.com> writes:

> Repro steps:
> 1. Open foo.js with emacs -Q --eval '(setq-default js-indent-level 2
> indent-tabs-mode nil)' foo.js
> 2. Go to line 61
> 3. Delete brace at end of that line
> 4. Save
> 5. Add brace back
> 6. Press RET
> 7. Errors happen

Thanks for the clear recipe.  With it, I'm also seeing errors (in both
Emacs 27 and 28):

Debugger entered--Lisp error: (error "internal--syntax-propertize did not move syntax-pr...")
  backward-prefix-chars()
  back-to-indentation()
  current-left-margin()
  move-to-left-margin(nil t)
  #f(compiled-function () #<bytecode 0x155c01f42651>)()
  self-insert-command(1)
  newline(nil 1)
  funcall-interactively(newline nil 1)
  call-interactively(newline nil nil)

But I'm not seeing the "binding depth" one.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
  2021-02-23 15:36     ` Lars Ingebrigtsen
@ 2021-02-23 16:31       ` Ryan Olson
  2021-02-24 16:47         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 6+ messages in thread
From: Ryan Olson @ 2021-02-23 16:31 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 46713

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

It was with something like this that I saw the error I reported. I’m not
sure how to reproduce that.

I guess we can instead fix this one (that _is_ reproducible)?

On Tue, Feb 23, 2021 at 8:36 AM Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Ryan Olson <ryan.olson.x@gmail.com> writes:
>
> > Repro steps:
> > 1. Open foo.js with emacs -Q --eval '(setq-default js-indent-level 2
> > indent-tabs-mode nil)' foo.js
> > 2. Go to line 61
> > 3. Delete brace at end of that line
> > 4. Save
> > 5. Add brace back
> > 6. Press RET
> > 7. Errors happen
>
> Thanks for the clear recipe.  With it, I'm also seeing errors (in both
> Emacs 27 and 28):
>
> Debugger entered--Lisp error: (error "internal--syntax-propertize did not
> move syntax-pr...")
>   backward-prefix-chars()
>   back-to-indentation()
>   current-left-margin()
>   move-to-left-margin(nil t)
>   #f(compiled-function () #<bytecode 0x155c01f42651>)()
>   self-insert-command(1)
>   newline(nil 1)
>   funcall-interactively(newline nil 1)
>   call-interactively(newline nil nil)
>
> But I'm not seeing the "binding depth" one.
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no
>
-- 
Sent from my iPhone

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

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

* bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line
  2021-02-23 16:31       ` Ryan Olson
@ 2021-02-24 16:47         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 6+ messages in thread
From: Lars Ingebrigtsen @ 2021-02-24 16:47 UTC (permalink / raw)
  To: Ryan Olson; +Cc: 46713

Ryan Olson <ryan.olson.x@gmail.com> writes:

> I guess we can instead fix this one (that _is_ reproducible)?

Yup.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2021-02-24 16:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-22 22:22 bug#46713: 27.1; Variable binding depth exceeds max-specpdl-size in js-mode with js-indent-level 2 and indent-tabs-mode nil on new line Ryan Olson
2021-02-22 22:36 ` Lars Ingebrigtsen
2021-02-23  2:03   ` Ryan Olson
2021-02-23 15:36     ` Lars Ingebrigtsen
2021-02-23 16:31       ` Ryan Olson
2021-02-24 16:47         ` Lars Ingebrigtsen

unofficial mirror of bug-gnu-emacs@gnu.org 

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/emacs-bugs/0 emacs-bugs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 emacs-bugs emacs-bugs/ https://yhetil.org/emacs-bugs \
		bug-gnu-emacs@gnu.org
	public-inbox-index emacs-bugs

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.emacs.bugs
	nntp://news.gmane.io/gmane.emacs.bugs


AGPL code for this site: git clone http://ou63pmih66umazou.onion/public-inbox.git