Coder Social home page Coder Social logo

Comments (6)

zsol avatar zsol commented on May 27, 2024 1

Hah, turns out the Windows debug binary overflows the stack when parsing relatively complex files (like the generated code in libcst itself). Release build works fine (which is why you couldn't repro 😄 ). There's no feedback from the OS/Python when this happens:

(libcst) PS C:\Users\zsolz\projects\libcst\libcst\testing> python
Python 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import libcst as cst
>>> f = open("utils.py").read()
>>> cst.parse_module(f)
(libcst) PS C:\Users\zsolz\projects\libcst\libcst\testing>

(I had to run the rust test binary -in debug mode- directly to observe the stack overflow).

Thanks again, this is not an issue in ufmt/usort.

from ufmt.

amyreese avatar amyreese commented on May 27, 2024

I can't replicate this error on either Python 3.8.6 or 3.9.9. What version of Windows are you testing on? Do you still see this error if you upgrade ufmt to 1.3.1post1? Can you provide a paste of pip list?

from ufmt.

zsol avatar zsol commented on May 27, 2024

This is Windows 10, Python 3.9.5, and here's the output of pip list: https://gist.github.com/zsol/4d1ade439bb96693da50c3be1e205cdc

It happens with ufmt 1.3.1post1 too. I can try different python versions a bit later. Just plain black works fine

from ufmt.

amyreese avatar amyreese commented on May 27, 2024

Hmm, I still can't replicate this, even with 3.9.5 and installing libcst from the same rev listed in your gist. I even tried installing rustc, rebuilding libcst, and setting LIBCST_PARSER_TYPE=native, and was still able to ufmt --debug format libcst/ without an error. I am running this via git-bash, but I really hope that's not a determining factor in this. 😅

from ufmt.

amyreese avatar amyreese commented on May 27, 2024

My only thought is that something is causing the rust parser in libcst to segfault in a child process (or otherwise abort without raising an exception). If there's a specific file that triggers this behavior, you could try something like this to run usort in the parent process and hopefully get some better segfault/debugging out of it:

from usort import usort_file
from pathlib import Path
result = usort_file(Path("libcst/__init__.py"))
print(result.error)

from ufmt.

zsol avatar zsol commented on May 27, 2024

My only thought is that something is causing the rust parser in libcst to segfault in a child process (or otherwise abort without raising an exception).

Yeah this seems plausible, because I can no longer reproduce the issue if I disable the rust parser. I'll poke around, thanks for the tips!

from ufmt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.