Skip to content

Blosc throws floating point exception when encoding NumPy array with zero-itemsize dtype #516

Open
@li-dan

Description

@li-dan

Minimal, reproducible code sample, a copy-pastable example if possible

import numcodecs, numpy; numcodecs.Blosc().encode(numpy.zeros((5,), dtype=[('foo', int, (0,))]))

Problem description

This throws a floating point exception:

$ python -c "import numcodecs, numpy; numcodecs.Blosc().encode(numpy.zeros((5,), dtype=[('foo', int, (0,))]))"
Floating point exception (core dumped)

The expected output is that the array is encoded without an exception.

The array has ndarray.nbytes=0 and ndarray.dtype.itemsize=0. NumCodecs passes these into Blosc, and eventually compute_blocksize gets called with typesize=0 and nbytes=0, causing compute_blocksize to return 0. This triggers a floating point exception on this line in initialize_context_compression().

Version and installation information

  • NumCodecs 0.12.1
  • Python 3.11.4
  • Linux
  • NumCodecs was installed using pip into a virtual environment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions