Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One line that simply crashes all RAM memory #1665

Open
filaPro opened this issue Sep 11, 2024 · 7 comments
Open

One line that simply crashes all RAM memory #1665

filaPro opened this issue Sep 11, 2024 · 7 comments
Labels

Comments

@filaPro
Copy link

filaPro commented Sep 11, 2024

import cadquery as cq
cq.Workplane().sketch().push([(48.5800789794081,-3.3737790291878085)]).rect(3.0,87.6847679284009).rect(3.0,88.65465934289723).polygon([(0,0),(1,1),(2,2)],mode="s").finalize().extrude(1)

cadquery==2.4.0 is installed throw pip

@filaPro filaPro added the bug Something isn't working label Sep 11, 2024
@jmwright
Copy link
Member

Please show the output of pip list and tell us which OS you're on.

@filaPro
Copy link
Author

filaPro commented Sep 11, 2024

thank you for quick response. i'm inside docker with ubuntu 22.04.3. the host os outside docker is ubuntu 20.04.6

Package                   Version
------------------------- --------------
accelerate                0.31.0
addict                    2.4.0
aiohttp                   3.9.5
aiosignal                 1.3.1
anaconda-anon-usage       0.4.4
antlr4-python3-runtime    4.9.3
anyio                     4.4.0
archspec                  0.2.3
argon2-cffi               23.1.0
argon2-cffi-bindings      21.2.0
arrow                     1.3.0
asttokens                 2.0.5
astunparse                1.6.3
async-lru                 2.0.4
async-timeout             4.0.3
attrs                     23.1.0
Babel                     2.15.0
beautifulsoup4            4.12.3
bleach                    6.1.0
blinker                   1.8.2
boltons                   23.0.0
Brotli                    1.0.9
cadquery                  2.4.0
cadquery-ocp              7.7.2
casadi                    3.6.5
certifi                   2024.6.2
cffi                      1.16.0
chardet                   4.0.0
charset-normalizer        2.0.4
click                     8.1.7
comm                      0.2.2
conda                     24.5.0
conda-build               24.3.0
conda-content-trust       0.2.0
conda_index               0.5.0
conda-libmamba-solver     24.1.0
conda-package-handling    2.3.0
conda_package_streaming   0.10.0
ConfigArgParse            1.7
contourpy                 1.2.1
cryptography              42.0.5
cycler                    0.12.1
Cython                    3.0.10
dash                      2.17.1
dash-core-components      2.0.0
dash-html-components      2.0.0
dash-table                5.0.0
datasets                  2.20.0
debugpy                   1.8.2
decorator                 5.1.1
defusedxml                0.7.1
dill                      0.3.8
distro                    1.9.0
dnspython                 2.6.1
easydict                  1.13
einops                    0.8.0
exceptiongroup            1.2.0
executing                 0.8.3
expecttest                0.2.1
ezdxf                     1.3.1
fastjsonschema            2.20.0
filelock                  3.13.1
flash-attn                2.5.9.post1
Flask                     3.0.3
fonttools                 4.53.0
fqdn                      1.5.1
frozendict                2.4.2
frozenlist                1.4.1
fsspec                    2024.5.0
gmpy2                     2.1.2
h11                       0.14.0
httpcore                  1.0.5
httpx                     0.27.0
huggingface-hub           0.23.4
hypothesis                6.103.0
idna                      3.7
importlib_metadata        8.0.0
ipykernel                 6.29.4
ipython                   8.20.0
ipywidgets                8.1.3
isoduration               20.11.0
itsdangerous              2.2.0
jedi                      0.18.1
Jinja2                    3.1.4
joblib                    1.4.2
json5                     0.9.25
jsonpatch                 1.33
jsonpointer               2.1
jsonschema                4.19.2
jsonschema-specifications 2023.7.1
jupyter                   1.0.0
jupyter_client            8.6.2
jupyter-console           6.6.3
jupyter_core              5.7.2
jupyter-events            0.10.0
jupyter-lsp               2.2.5
jupyter_server            2.14.1
jupyter_server_terminals  0.5.3
jupyterlab                4.2.3
jupyterlab_pygments       0.3.0
jupyterlab_server         2.27.2
jupyterlab_widgets        3.0.11
kiwisolver                1.4.5
lark                      1.1.9
libarchive-c              2.9
libmambapy                1.5.8
lightning                 2.3.1
lightning-utilities       0.11.3.post0
MarkupSafe                2.1.3
matplotlib                3.9.0
matplotlib-inline         0.1.6
menuinst                  2.1.0
michelangelo              0.4.1
mistune                   3.0.2
mkl-fft                   1.3.8
mkl-random                1.2.4
mkl-service               2.4.0
more-itertools            10.1.0
mpmath                    1.3.0
multidict                 6.0.5
multimethod               1.9.1
multiprocess              0.70.16
nbclient                  0.10.0
nbconvert                 7.16.4
nbformat                  5.10.4
nest-asyncio              1.6.0
networkx                  3.2.1
nlopt                     2.7.1
notebook                  7.2.1
notebook_shim             0.2.4
nptyping                  2.0.1
numpy                     1.26.4
omegaconf                 2.3.0
open3d                    0.18.0
optree                    0.11.0
overrides                 7.7.0
packaging                 23.2
pandas                    2.2.2
pandocfilters             1.5.1
parso                     0.8.3
path                      16.14.0
peft                      0.11.1
pexpect                   4.8.0
pillow                    10.3.0
pip                       24.0
pkginfo                   1.10.0
platformdirs              3.10.0
plotly                    5.22.0
pluggy                    1.0.0
pointnet2_cuda            0.0.0
prometheus_client         0.20.0
prompt-toolkit            3.0.43
psutil                    5.9.0
ptyprocess                0.7.0
pure-eval                 0.2.2
pyarrow                   16.1.0
pyarrow-hotfix            0.6
pycosat                   0.6.6
pycparser                 2.21
Pygments                  2.15.1
pyparsing                 3.1.2
pyquaternion              0.9.9
PySocks                   1.7.1
python-dateutil           2.9.0.post0
python-etcd               0.4.5
python-json-logger        2.0.7
pytorch-lightning         2.3.1
pytz                      2024.1
PyYAML                    6.0.1
pyzmq                     26.0.3
qtconsole                 5.5.2
QtPy                      2.4.1
referencing               0.30.2
regex                     2024.5.15
requests                  2.32.2
retrying                  1.3.4
rfc3339-validator         0.1.4
rfc3986-validator         0.1.1
rpds-py                   0.10.6
ruamel.yaml               0.17.21
ruamel.yaml.clib          0.2.6
safetensors               0.4.3
scikit-learn              1.5.0
scipy                     1.14.0
Send2Trash                1.8.3
setuptools                69.5.1
shortuuid                 1.0.13
six                       1.16.0
sniffio                   1.3.1
sortedcontainers          2.4.0
soupsieve                 2.5
stack-data                0.2.0
svgwrite                  1.4.3
sympy                     1.12.1
tenacity                  8.4.2
termcolor                 2.4.0
terminado                 0.18.1
threadpoolctl             3.5.0
tinycss2                  1.3.0
tokenizers                0.19.1
tomli                     2.0.1
torch                     2.3.1
torchaudio                2.3.1
torchelastic              0.2.2
torchmetrics              1.4.0.post0
torchvision               0.18.1
tornado                   6.4.1
tqdm                      4.66.4
traitlets                 5.14.3
transformers              4.42.3
trimesh                   4.4.9
triton                    2.3.1
truststore                0.8.0
types-dataclasses         0.6.6
types-python-dateutil     2.9.0.20240316
typing_extensions         4.11.0
typish                    1.9.3
tzdata                    2024.1
uri-template              1.3.0
urllib3                   2.2.2
wcwidth                   0.2.5
webcolors                 24.6.0
webencodings              0.5.1
websocket-client          1.8.0
Werkzeug                  3.0.3
wheel                     0.43.0
widgetsnbextension        4.0.11
xxhash                    3.4.1
yarl                      1.9.4
zipp                      3.19.2
zstandard                 0.22.0

@filaPro
Copy link
Author

filaPro commented Sep 11, 2024

if you are not able to reproduce this, i can try to make minimal reproducible docker image

@jmwright
Copy link
Member

It does not look like the polygon is closed, so the cause could be extruding an open/invalid sketch. If you remove the polygon call, and leave everything else, it works fine. One of the core devs who has worked more directly on the sketch feature can tell you more.

@filaPro
Copy link
Author

filaPro commented Sep 11, 2024

thank you again for your response. i also investigated that the problem is about the polygon with zero area. what i expect is to get an exception, but not like dying os due to out of memory. for example this line cq.Worplane().sketch().polygon([(0,0),(1,1),(2,2)],mode="s").finalize().extrude(1) produces ValueError: Null TopoDS_Shape object, and it is fine.

@adam-urbanczyk
Copy link
Member

Sometimes you'll get these kind of issues with invalid models. Here is a workaround:

import cadquery as cq
res = (
       cq.Workplane()
       .sketch()
       .push([(48.5800789794081,-3.3737790291878085)])
       .rect(3.0,87.6847679284009)
       .rect(3.0,88.65465934289723)
       .polygon([(0,0),(1,1),(2,2)],mode="s")
       .finalize()
       .extrude(1, clean=False)
)

Note that:

import OCP
OCP.BRepAlgoAPI.BRepAlgoAPI_Check(res.val().wrapped).IsValid()

results in

Out[8]: False

@filaPro
Copy link
Author

filaPro commented Sep 13, 2024

Thank you, i didn't know about this clean=False. Believe the memory leak will be fixed in future releases of cadquery or occ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants