Fatal error with snippet using `np.random` and `scipy.linalg`
See original GitHub issue🐛 Bug
I get a fatal error when trying to run a snippet using numpy.random
and scipy.linalg
inside node.
I get somewhat similar issues when trying to run the snippet in Chromium or Firefox.
Note the behaviour is not always the same on each run. In particular, the error does not happen on the same loop iteration. I have seen this kind of variations:
- Pyodide fatal error:
memory access out of bounds
ortable index out of bounds
ornull function or function signature mismatch
- weird Python error that does not make sense (since the code works in previous loop iterations) e.g.
TypeError: my_make_regression() got multiple values for argument 'n_features'
orSystemError: Type does not define the tp_name field.
- in Chromium: the tab crashes with a “Aw snap” message
- what seems like a hang, i.e. the loop counter is not printed anymore
I tried to get more info by building Pyodide myself with -g2
flags on commit https://github.com/pyodide/pyodide/commit/2326c05d83bb172d3a8b3d267d3440ed687f5c8d. Out of 20 runs, here is the kind of stack-trace I got (with some kind of grouping):
memory access out of bounds dlfree (3 times)
</summary
Stack (most recent call first):
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a2b27)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at object_dealloc (wasm://wasm/01f433ea:wasm-function[2259]:0x16cad1)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at __pyx_pw_5numpy_6random_13bit_generator_1_int_to_uint32_array (wasm://wasm/00087946:wasm-function[237]:0x14cb3)
at __pyx_pw_5numpy_6random_13bit_generator_3_coerce_to_uint32_array (wasm://wasm/00087946:wasm-function[238]:0x162b3)
at __pyx_f_5numpy_6random_13bit_generator_12SeedSequence_get_assembled_entropy (wasm://wasm/00087946:wasm-function[147]:0x8f88)
at __pyx_pw_5numpy_6random_13bit_generator_12SeedSequence_1__init__ (wasm://wasm/00087946:wasm-function[213]:0xff93)
at type_call (wasm://wasm/01f433ea:wasm-function[2243]:0x16aba2) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a2b27)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at PyObject_GC_Del (wasm://wasm/01f433ea:wasm-function[3969]:0x234a30)
at tb_dealloc (wasm://wasm/01f433ea:wasm-function[3847]:0x226a7c)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at PyTraceBack_Here (wasm://wasm/01f433ea:wasm-function[3849]:0x226d2f)
at __Pyx_AddTraceback (wasm://wasm/00087946:wasm-function[133]:0x83f9)
at __pyx_pw_5numpy_6random_13bit_generator_12BitGenerator_1__init__ (wasm://wasm/00087946:wasm-function[189]:0xc4e2)
at wrap_init (wasm://wasm/01f433ea:wasm-function[2345]:0x1727e0) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1192 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a29df)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at unicode_dealloc (wasm://wasm/01f433ea:wasm-function[2597]:0x19574b)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _Py_DisplaySourceLine (wasm://wasm/01f433ea:wasm-function[3851]:0x22740e)
at PyTraceBack_Print (wasm://wasm/01f433ea:wasm-function[3852]:0x22789c)
at write_unraisable_exc (wasm://wasm/01f433ea:wasm-function[3258]:0x1ed01d)
at sys_unraisablehook (wasm://wasm/01f433ea:wasm-function[3818]:0x2260bb)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a2b27)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at object_dealloc (wasm://wasm/01f433ea:wasm-function[2259]:0x16cad1)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at __pyx_pw_5numpy_6random_13bit_generator_1_int_to_uint32_array (wasm://wasm/00087946:wasm-function[237]:0x14cb3)
at __pyx_pw_5numpy_6random_13bit_generator_3_coerce_to_uint32_array (wasm://wasm/00087946:wasm-function[238]:0x162b3)
at __pyx_f_5numpy_6random_13bit_generator_12SeedSequence_get_assembled_entropy (wasm://wasm/00087946:wasm-function[147]:0x8f88)
at __pyx_pw_5numpy_6random_13bit_generator_12SeedSequence_1__init__ (wasm://wasm/00087946:wasm-function[213]:0xff93)
at type_call (wasm://wasm/01f433ea:wasm-function[2243]:0x16aba2) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a2b27)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at PyObject_GC_Del (wasm://wasm/01f433ea:wasm-function[3969]:0x234a30)
at tb_dealloc (wasm://wasm/01f433ea:wasm-function[3847]:0x226a7c)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at PyTraceBack_Here (wasm://wasm/01f433ea:wasm-function[3849]:0x226d2f)
at __Pyx_AddTraceback (wasm://wasm/00087946:wasm-function[133]:0x83f9)
at __pyx_pw_5numpy_6random_13bit_generator_12BitGenerator_1__init__ (wasm://wasm/00087946:wasm-function[189]:0xc4e2)
at wrap_init (wasm://wasm/01f433ea:wasm-function[2345]:0x1727e0) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1192 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlfree (wasm://wasm/01f433ea:wasm-function[8627]:0x3a29df)
at _PyMem_RawFree (wasm://wasm/01f433ea:wasm-function[2006]:0x15b64f)
at PyObject_Free (wasm://wasm/01f433ea:wasm-function[2038]:0x15c899)
at unicode_dealloc (wasm://wasm/01f433ea:wasm-function[2597]:0x19574b)
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _Py_DisplaySourceLine (wasm://wasm/01f433ea:wasm-function[3851]:0x22740e)
at PyTraceBack_Print (wasm://wasm/01f433ea:wasm-function[3852]:0x22789c)
at write_unraisable_exc (wasm://wasm/01f433ea:wasm-function[3258]:0x1ed01d)
at sys_unraisablehook (wasm://wasm/01f433ea:wasm-function[3818]:0x2260bb)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82) {
pyodide_fatal_error: true
}
memory access out of bounds `dlmalloc` (4 times)
Stack (most recent call first):
File "/lib/python3.10/site-packages/numpy/lib/function_base.py", line 602 in asarray_chkfinite
File "/lib/python3.10/site-packages/scipy/ ###_lib/_util.py", line 287 in _asarray_validated
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1134 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlmalloc (wasm://wasm/01f433ea:wasm-function[8626]:0x3a14c7)
at default_malloc (wasm://wasm/00978c1e:wasm-function[550]:0x1da38)
at PyDataMem_UserNEW (wasm://wasm/00978c1e:wasm-function[554]:0x1db3b)
at PyArray_NewFromDescr_int (wasm://wasm/00978c1e:wasm-function[1283]:0x50151)
at PyArray_NewFromDescr (wasm://wasm/00978c1e:wasm-function[1285]:0x50611)
at ufunc_generic_fastcall (wasm://wasm/00978c1e:wasm-function[4380]:0x1a6be0)
at ufunc_generic_vectorcall (wasm://wasm/00978c1e:wasm-function[4379]:0x1a510c)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d418d)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/contextlib.py", line 79 in inner
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlmalloc (wasm://wasm/01f433ea:wasm-function[8626]:0x3a123e)
at _PyMem_RawMalloc (wasm://wasm/01f433ea:wasm-function[2003]:0x15b61d)
at PyObject_Malloc (wasm://wasm/01f433ea:wasm-function[2035]:0x15c819)
at PyUnicode_New (wasm://wasm/01f433ea:wasm-function[2407]:0x1763c1)
at _PyUnicodeWriter_PrepareInternal (wasm://wasm/01f433ea:wasm-function[2441]:0x17b316)
at _PyUnicodeWriter_WriteASCIIString (wasm://wasm/01f433ea:wasm-function[2440]:0x17afdc)
at PyUnicode_FromFormatV (wasm://wasm/01f433ea:wasm-function[2438]:0x17a55f)
at PyErr_Format (wasm://wasm/01f433ea:wasm-function[3219]:0x1ebc6c)
at array_item (wasm://wasm/00978c1e:wasm-function[2717]:0xc9217)
at PySequence_GetItem (wasm://wasm/01f433ea:wasm-function[629]:0x102c9c) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/linecache.py", line 137 in updatecache
File "/lib/python3.10/linecache.py", line 46 in getlines
File "/lib/python3.10/linecache.py", line 30 in getline
File "/lib/python3.10/traceback.py", line 306 in line
File "/lib/python3.10/traceback.py", line 383 in extract
File "/lib/python3.10/traceback.py", line 502 in __init__
File "/lib/python3.10/traceback.py", line 135 in format_exception
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlmalloc (wasm://wasm/01f433ea:wasm-function[8626]:0x3a14c7)
at dlrealloc (wasm://wasm/01f433ea:wasm-function[8628]:0x3a2eaf)
at _PyMem_RawRealloc (wasm://wasm/01f433ea:wasm-function[2005]:0x15b647)
at PyMem_Realloc (wasm://wasm/01f433ea:wasm-function[2030]:0x15c70d)
at list_extend (wasm://wasm/01f433ea:wasm-function[1504]:0x1364b1)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at method_vectorcall_O (wasm://wasm/01f433ea:wasm-function[1100]:0x122ca5)
at object_vacall (wasm://wasm/01f433ea:wasm-function[977]:0x11b925)
at _PyObject_CallMethodIdObjArgs (wasm://wasm/01f433ea:wasm-function[978]:0x11ba49)
at _io__IOBase_readlines (wasm://wasm/01f433ea:wasm-function[6755]:0x331e21) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/linecache.py", line 137 in updatecache
File "/lib/python3.10/linecache.py", line 46 in getlines
File "/lib/python3.10/linecache.py", line 30 in getline
File "/lib/python3.10/traceback.py", line 306 in line
File "/lib/python3.10/traceback.py", line 383 in extract
File "/lib/python3.10/traceback.py", line 502 in __init__
File "/lib/python3.10/traceback.py", line 135 in format_exception
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlmalloc (wasm://wasm/01f433ea:wasm-function[8626]:0x3a0fd8)
at _PyMem_RawMalloc (wasm://wasm/01f433ea:wasm-function[2003]:0x15b61d)
at PyObject_Malloc (wasm://wasm/01f433ea:wasm-function[2035]:0x15c819)
at PyUnicode_New (wasm://wasm/01f433ea:wasm-function[2407]:0x1763c1)
at _PyUnicode_FromASCII (wasm://wasm/01f433ea:wasm-function[2427]:0x17937b)
at PyUnicode_Substring (wasm://wasm/01f433ea:wasm-function[2582]:0x18e575)
at _textiowrapper_readline (wasm://wasm/01f433ea:wasm-function[6890]:0x33b0c5)
at textiowrapper_iternext (wasm://wasm/01f433ea:wasm-function[6889]:0x33ac14)
at list_extend (wasm://wasm/01f433ea:wasm-function[1504]:0x13651f)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82) {
pyodide_fatal_error: true
}
memory access out of bounds in Fortran code (3 times)
Stack (most recent call first):
File "/lib/python3.10/asyncio/tasks.py", line 246 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlacpy_ (wasm://wasm/00e47a32:wasm-function[1601]:0x353aa9)
at dlals0_ (wasm://wasm/00e47a32:wasm-function[610]:0x1397c5)
at dlalsa_ (wasm://wasm/00e47a32:wasm-function[611]:0x13a013)
at dlalsd_ (wasm://wasm/00e47a32:wasm-function[612]:0x13ad53)
at dgelsd_ (wasm://wasm/00e47a32:wasm-function[550]:0x10f9a9)
at f2py_rout__flapack_dgelsd (wasm://wasm/006793d6:wasm-function[248]:0x30f3f)
at fortran_call (wasm://wasm/0003dbea:wasm-function[103]:0x664d)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6549) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1192 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlacpy_ (wasm://wasm/00e47a32:wasm-function[1601]:0x353aa9)
at dlals0_ (wasm://wasm/00e47a32:wasm-function[610]:0x1397c5)
at dlalsa_ (wasm://wasm/00e47a32:wasm-function[611]:0x13a013)
at dlalsd_ (wasm://wasm/00e47a32:wasm-function[612]:0x13ad53)
at dgelsd_ (wasm://wasm/00e47a32:wasm-function[550]:0x10f9a9)
at f2py_rout__flapack_dgelsd (wasm://wasm/006793d6:wasm-function[248]:0x30f3f)
at fortran_call (wasm://wasm/0003dbea:wasm-function[103]:0x664d)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6549) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1192 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at dlasd7_ (wasm://wasm/00e47a32:wasm-function[1645]:0x36894c)
at dlasd6_ (wasm://wasm/00e47a32:wasm-function[1644]:0x36841e)
at dlasda_ (wasm://wasm/00e47a32:wasm-function[1647]:0x369ffd)
at dlalsd_ (wasm://wasm/00e47a32:wasm-function[612]:0x13acfc)
at dgelsd_ (wasm://wasm/00e47a32:wasm-function[550]:0x10f9a9)
at f2py_rout__flapack_dgelsd (wasm://wasm/006793d6:wasm-function[248]:0x30f3f)
at fortran_call (wasm://wasm/0003dbea:wasm-function[103]:0x664d)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6549) {
pyodide_fatal_error: true
}
memory access out of bounds `PyUnicode_FromFormatV` (1 time)
Stack (most recent call first):
File "/lib/python3.10/contextlib.py", line 79 in inner
File "<exec>", line 9 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: memory access out of bounds
at PyUnicode_FromFormatV (wasm://wasm/01f433ea:wasm-function[2438]:0x17aa7f)
at _PyErr_Format (wasm://wasm/01f433ea:wasm-function[3216]:0x1eb9b4)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d43d1)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at __pyx_pw_5numpy_6random_8_mt19937_7MT19937_1__init__ (wasm://wasm/0003b756:wasm-function[110]:0x4dcd)
at type_call (wasm://wasm/01f433ea:wasm-function[2243]:0x16aba2)
at __Pyx_PyObject_Call (wasm://wasm/00207e6e:wasm-function[138]:0xe488)
at __pyx_pw_5numpy_6random_6mtrand_11RandomState_1__init__ (wasm://wasm/00207e6e:wasm-function[148]:0xf51f) {
pyodide_fatal_error: true
}
table index is out of bounds in `_Py_Dealloc` (2 times)
Stack (most recent call first):
File "/lib/python3.10/asyncio/tasks.py", line 246 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: table index is out of bounds
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d253b)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at method_vectorcall (wasm://wasm/01f433ea:wasm-function[1007]:0x11c6a9)
at context_run (wasm://wasm/01f433ea:wasm-function[3206]:0x1eb3ea)
at cfunction_vectorcall_FASTCALL_KEYWORDS (wasm://wasm/01f433ea:wasm-function[1869]:0x155cea)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "<__array_function__ internals>", line 179 in copyto
File "/lib/python3.10/site-packages/numpy/core/numeric.py", line 205 in ones
File "<exec>", line 11 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: table index is out of bounds
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce60d)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11ab37)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4771)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566) {
pyodide_fatal_error: true
}
null function or function signature mismatch in `_PyDealloc` (4 times)
Stack (most recent call first):
File "/lib/python3.10/site-packages/scipy/_lib/_util.py", line 284 in _asarray_validated
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1134 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: null function or function signature mismatch
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce805)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d418d)
at _PyEval_Vector (wasm-->://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4239)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "<__array_function__ internals>", line 179 in copyto
File "/lib/python3.10/site-packages/numpy/core/numeric.py", line 205 in ones
File "<exec>", line 11 in my_make_regression
File "<exec>", line 5 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: null function or function signature mismatch
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d478d)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4239)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d418d) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/asyncio/futures.py", line 269 in set_exception
File "/lib/python3.10/asyncio/tasks.py", line 250 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: null function or function signature mismatch
at PyDict_GetItemWithError (wasm://wasm/01f433ea:wasm-function[1666]:0x146ccc)
at _PyObject_GenericGetAttrWithDict (wasm://wasm/01f433ea:wasm-function[1965]:0x159ec6)
at PyObject_GenericGetAttr (wasm://wasm/01f433ea:wasm-function[1964]:0x159db2)
at PyObject_GetAttr (wasm://wasm/01f433ea:wasm-function[1956]:0x159893)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4bb9)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at method_vectorcall (wasm://wasm/01f433ea:wasm-function[1007]:0x11c639)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d418d) {
pyodide_fatal_error: true
}
Stack (most recent call first):
File "/lib/python3.10/site-packages/numpy/core/_methods.py", line 62 in _all
File "/lib/python3.10/site-packages/numpy/lib/function_base.py", line 602 in asarray_chkfinite
File "/lib/python3.10/site-packages/scipy/_lib/_util.py", line 287 in _asarray_validated
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1134 in lstsq
File "<exec>", line 6 in <module>
File "/lib/python3.10/_pyodide/_base.py", line 357 in run_async
File "/lib/python3.10/_pyodide/_base.py", line 531 in eval_code_async
File "/lib/python3.10/asyncio/tasks.py", line 232 in __step
File "/lib/python3.10/asyncio/events.py", line 80 in _run
File "/lib/python3.10/pyodide/webloop.py", line 267 in run_handle
/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:452
throw ex;
^
RuntimeError: null function or function signature mismatch
at _Py_Dealloc (wasm://wasm/01f433ea:wasm-function[1992]:0x15b407)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d22bb)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97)
at array_all (wasm://wasm/00978c1e:wasm-function[2751]:0xd21af)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at method_vectorcall_VARARGS_KEYWORDS (wasm://wasm/01f433ea:wasm-function[1101]:0x122e5f) {
pyodide_fatal_error: true
}
`PythonError` that does not make sense (3 times)
PythonError: Traceback (most recent call last):
File "/lib/python3.10/asyncio/futures.py", line 201, in result
raise self._exception
File "/lib/python3.10/asyncio/tasks.py", line 232, in __step
result = coro.send(None)
File "/lib/python3.10/_pyodide/_base.py", line 531, in eval_code_async
await CodeRunner(
File "/lib/python3.10/_pyodide/_base.py", line 357, in run_async
coroutine = eval(self.code, globals, locals)
File "<exec>", line 5, in <module>
File "<exec>", line 13, in my_make_regression
ValueError: matmul: Input operand 1 does not have enough dimensions (has 1, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires 2)
at new_error (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1295:75)
at wrap_exception (wasm://wasm/01f433ea:wasm-function[281]:0xd2f26)
at FutureDoneCallback_call (wasm://wasm/01f433ea:wasm-function[391]:0xd7ada)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at context_run (wasm://wasm/01f433ea:wasm-function[3206]:0x1eb3d6)
at cfunction_vectorcall_FASTCALL_KEYWORDS (wasm://wasm/01f433ea:wasm-function[1869]:0x155cea)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4771)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d41b3)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at _pyproxy_apply (wasm://wasm/01f433ea:wasm-function[386]:0xd77a6)
at Object.Module.callPyObjectKwargs (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:5838)
at Object.Module.callPyObject (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:6216)
at Timeout.wrapper [as _onTimeout] (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1394:228)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
__error_address: 34329224
}
PythonError: Traceback (most recent call last):
File "/lib/python3.10/asyncio/futures.py", line 201, in result
raise self._exception
File "/lib/python3.10/asyncio/tasks.py", line 232, in __step
result = coro.send(None)
File "/lib/python3.10/_pyodide/_base.py", line 531, in eval_code_async
await CodeRunner(
File "/lib/python3.10/_pyodide/_base.py", line 357, in run_async
coroutine = eval(self.code, globals, locals)
File "<exec>", line 6, in <module>
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1134, in lstsq
a1 = _asarray_validated(a, check_finite=check_finite)
File "/lib/python3.10/site-packages/scipy/_lib/_util.py", line 287, in _asarray_validated
a = toarray(a)
File "/lib/python3.10/site-packages/numpy/lib/function_base.py", line 602, in asarray_chkfinite
if a.dtype.char in typecodes['AllFloat'] and not np.isfinite(a).all():
SystemError: Type does not define the tp_name field.
at new_error (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1295:75)
at wrap_exception (wasm://wasm/01f433ea:wasm-function[281]:0xd2f26)
at FutureDoneCallback_call (wasm://wasm/01f433ea:wasm-function[391]:0xd7ada)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at context_run (wasm://wasm/01f433ea:wasm-function[3206]:0x1eb3d6)
at cfunction_vectorcall_FASTCALL_KEYWORDS (wasm://wasm/01f433ea:wasm-function[1869]:0x155cea)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4771)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d41b3)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at _pyproxy_apply (wasm://wasm/01f433ea:wasm-function[386]:0xd77a6)
at Object.Module.callPyObjectKwargs (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:5838)
at Object.Module.callPyObject (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:6216)
at Timeout.wrapper [as _onTimeout] (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1394:228)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
__error_address: 18010544
}
PythonError: Traceback (most recent call last):
File "/lib/python3.10/asyncio/futures.py", line 201, in result
raise self._exception
File "/lib/python3.10/asyncio/tasks.py", line 232, in __step
result = coro.send(None)
File "/lib/python3.10/_pyodide/_base.py", line 531, in eval_code_async
await CodeRunner(
File "/lib/python3.10/_pyodide/_base.py", line 357, in run_async
coroutine = eval(self.code, globals, locals)
File "<exec>", line 6, in <module>
File "/lib/python3.10/site-packages/scipy/linalg/_basic.py", line 1204, in lstsq
resids = np.asarray([], dtype=x.dtype)
SystemError: Objects/dictobject.c:1514: bad argument to internal function
at new_error (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1295:75)
at wrap_exception (wasm://wasm/01f433ea:wasm-function[281]:0xd2f26)
at FutureDoneCallback_call (wasm://wasm/01f433ea:wasm-function[391]:0xd7ada)
at method_call_trampoline (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1410:82)
at _PyObject_MakeTpCall (wasm://wasm/01f433ea:wasm-function[956]:0x11a5e6)
at context_run (wasm://wasm/01f433ea:wasm-function[3206]:0x1eb3d6)
at cfunction_vectorcall_FASTCALL_KEYWORDS (wasm://wasm/01f433ea:wasm-function[1869]:0x155cea)
at PyVectorcall_Call (wasm://wasm/01f433ea:wasm-function[961]:0x11aafa)
at _PyObject_Call (wasm://wasm/01f433ea:wasm-function[962]:0x11abf4)
at PyObject_Call (wasm://wasm/01f433ea:wasm-function[963]:0x11ac97)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d4771)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at call_function (wasm://wasm/01f433ea:wasm-function[3041]:0x1d6566)
at _PyEval_EvalFrameDefault (wasm://wasm/01f433ea:wasm-function[3032]:0x1d41b3)
at _PyEval_Vector (wasm://wasm/01f433ea:wasm-function[3029]:0x1ce77e)
at _PyFunction_Vectorcall (wasm://wasm/01f433ea:wasm-function[964]:0x11acda)
at _pyproxy_apply (wasm://wasm/01f433ea:wasm-function[386]:0xd77a6)
at Object.Module.callPyObjectKwargs (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:5838)
at Object.Module.callPyObject (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:338:6216)
at Timeout.wrapper [as _onTimeout] (/home/lesteve/dev/scikit-learn-tests-pyodide/node_modules/pyodide/pyodide.asm.js:1394:228)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
__error_address: 29290792
}
To Reproduce
node test.js
where test.js
has the following content:
const { loadPyodide } = require("pyodide");
async function main() {
let exitcode = 0;
try {
let pyodide = await loadPyodide();
await pyodide.loadPackage(["micropip"]);
await pyodide.runPythonAsync(`import micropip; micropip.install('scipy')`);
await pyodide.runPythonAsync(`
import numpy as np
from scipy import linalg
from js import console
def my_make_regression(n_samples, n_features, n_informative):
n_non_informative = n_features - n_informative
rng = np.random.RandomState(0)
X = rng.randn(n_samples, n_informative)
w = np.ones(n_informative)
noise = rng.randn(n_samples)
y = X @ w + 0.05 * noise
X = np.concatenate([X, rng.randn(n_samples, n_non_informative)], axis=1)
return X, y
`);
await pyodide.runPythonAsync(`
for i in range(10_000):
if i % 20 == 0:
console.log(f"{i}")
X, y = my_make_regression(n_features=50, n_informative=10, n_samples=100)
_ = linalg.lstsq(X, y)
`);
} catch (e) {
console.error(e);
exitcode = 1;
} finally {
process.exit(exitcode);
}
}
main();
Snippet easier to copy and paste in a Pyodide console e.g. https://pyodide.org/en/latest/console.html
import numpy as np
from scipy import linalg
from js import console
func_str = """
def my_make_regression(n_samples, n_features, n_informative):
n_non_informative = n_features - n_informative
rng = np.random.RandomState(0)
X = rng.randn(n_samples, n_informative)
w = np.ones(n_informative)
noise = rng.randn(n_samples)
y = X @ w + 0.05 * noise
X = np.concatenate([X, rng.randn(n_samples, n_non_informative)], axis=1)
return X, y
"""
exec(func_str)
for i in range(10_000):
if i % 20 == 0:
console.log(f"{i}")
X, y = my_make_regression(n_features=50, n_informative=10, n_samples=100)
_ = linalg.lstsq(X, y)
Expected behavior
The snippet runs without error
Environment
-
Pyodide Version: 0.22.0-alpha.1
-
node version: v17.8.0
-
Browser version: Chromium 106.0.5249.119 and Firefox 106.0b9
-
Commit hash of Pyodide git repository: To get more info in stack-traces, I build Pyodide on commit https://github.com/pyodide/pyodide/commit/2326c05d83bb172d3a8b3d267d3440ed687f5c8d
-
Build environment: I used the docker image pyodide/pyodide-env
Additional context
This snippet was put together to try to track down some of the errors we were seeing when running the scikit-learn tests in https://github.com/lesteve/scikit-learn-tests-pyodide.
Issue Analytics
- State:
- Created a year ago
- Reactions:1
- Comments:11 (10 by maintainers)
I tried to build libopenblas for wasm by following the instructions of this comment: https://github.com/xianyi/OpenBLAS/issues/3640#issuecomment-1144029630 to try to see if we could use openblas in the scipy wheel but I got a crash when building the so file. I reported the problem in the linked issue.
Hi @lesteve,
Yes.
Numpy and scipy. In effect, we are already statically linking CPython =)
I spent some time trying this just now with
numpy
and I’ve made a little progress but it is quite hard to do this. I grepped out all of the object files fromnumpy/build/numpy-1.23.0/build/temp.emscripten_3_1_25_wasm32-3.10
and linked them directly into the main module, then found all thePyInit_
symbols and added them to the inittab inmain.c
:inittab
And this almost works, but the problem is that it doesn’t respect the file system structure:
numpy
uses relative imports so we need the files to know they are imported as part of a package.So I think instead we would need to patch
_PyImport_FindSharedFuncptr
. I’m pretty confident this would fix the problem, and then it would be possible to load statically linked versions ofnumpy
andscipy
. There’s a separate question of how to link Pyodide with dynamic linking turned off. I think-sMAIN_MODULE=0 --whole-archive
would work, but we probably also need to provide stub definitions ofdlopen
anddlsym
. So altogether it’s a bit complicated but I think it’s possible.