oracle / graalpython

A Python 3 implementation built on GraalVM
Other
1.2k stars 104 forks source link

AttributeError: module 'os' has no attribute 'statvfs' #299

Closed oroppas closed 1 year ago

oroppas commented 1 year ago

Hi,

The following code

from multiprocessing import Process, Value, Array

def f(n, a):
    n.value = 3.1415927
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    p = Process(target=f, args=(num, arr))
    p.start()
    p.join()

    print(num.value)
    print(arr[:]

generated the error:

(graalpy) [ryuta@fedora tmp]$ graalpy c_char.py
Traceback (most recent call last):
  File "/home/ryuta/tmp/c_char.py", line 9, in <module>
    num = Value('d', 0.0)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/context.py", line 135, in Value
    return Value(typecode_or_type, *args, lock=lock,
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/sharedctypes.py", line 74, in Value
    obj = RawValue(typecode_or_type, *args)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/sharedctypes.py", line 49, in RawValue
    obj = _new_value(type_)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/sharedctypes.py", line 41, in _new_value
    wrapper = heap.BufferWrapper(size)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 331, in __init__
    block = BufferWrapper._heap.malloc(size)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 309, in malloc
    (arena, start, stop) = self._malloc(size)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 192, in _malloc
    return self._new_arena(size)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 166, in _new_arena
    arena = Arena(length)
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 85, in __init__
    dir=self._choose_dir(size))
  File "/home/ryuta/packages/graalvm/graalvm/graal/sdk/mxbuild/linux-amd64/GRAALVM_3666026860_JAVA17/graalvm-3666026860-java17-23.0.0-dev/languages/python/lib/python3.10/multiprocessing/heap.py", line 95, in _choose_dir
    st = os.statvfs(d)
AttributeError: module 'os' has no attribute 'statvfs'
msimacek commented 1 year ago

Thank you for the report, we're looking into fixing the issue.

msimacek commented 1 year ago

This should be now fixed in master. Unfortunately, we currently don't have working snapshot builds

oroppas commented 1 year ago

I can confirm the fix on my fedora. Thanks!