Skip to content

pyparted crashes in disk.destroy() #62

@rlaager

Description

@rlaager
$ sudo python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import parted
>>> device = parted.getDevice("/path/to/disk.img")
>>> disk = parted.Disk(device)
>>> disk.destroy()
Backtrace has 20 calls on stack:
  20: /lib/x86_64-linux-gnu/libparted.so.2(ped_assert+0x45) [0x7f95f6dde6e5]
  19: /lib/x86_64-linux-gnu/libparted.so.2(ped_disk_commit_to_os+0) [0x7f95f6de1500]
  18: /usr/lib/python3/dist-packages/_ped.cpython-36m-x86_64-linux-gnu.so(_ped_Disk_dealloc+0x12) [0x7f95f7032742]
  17: python3() [0x564dc8]
  16: python3() [0x502fd8]
  15: python3(_PyEval_EvalFrameDefault+0x449) [0x506859]
  14: python3() [0x504c28]
  13: python3() [0x58650d]
  12: python3(PyObject_Call+0x3e) [0x59ebbe]
  11: python3(_PyEval_EvalFrameDefault+0x1807) [0x507c17]
  10: python3() [0x504c28]
  9: python3() [0x502540]
  8: python3() [0x502f3d]
  7: python3(_PyEval_EvalFrameDefault+0x449) [0x506859]
  6: python3() [0x504c28]
  5: python3(PyEval_EvalCode+0x23) [0x506393]
  4: python3() [0x634d52]
  3: python3() [0x4a38c5]
  2: python3(PyRun_InteractiveLoopFlags+0xd4) [0x4a5cd5]
  1: python3(PyRun_AnyFileExFlags+0x53) [0x6387b3]
Aborted

Sometimes it doesn't crash immediately, but calling disk.destroy() twice will guarantee a crash. From what I can tell, disk.destroy() (or at least _ped_Disk_dealloc()) is being called when the Python object is garbage-collected. If it was already called explicitly earlier, then it crashes.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions