# Buggy code
def _tile_series(cls, op):
    from ..indexing.iloc import SeriesIlocGetItem

    out = op.outputs[0]
    inputs = op.inputs
    out_chunks = []

    if op.axis == 1:
        inputs = [item.rechunk(op.inputs[0].nsplits)._inplace_tile() for item in inputs]

    cum_index = 0
    nsplits = []
    for series in inputs:
        for c in series.chunks:
            if op.axis == 0:
                index = (c.index[0] + cum_index,)
                shape = c.shape
            else:
                index = (c.index[0], cum_index)
                shape = (c.shape[0], 1)
            iloc_op = SeriesIlocGetItem(indexes=(slice(None),))
            out_chunks.append(
                iloc_op.new_chunk(
                    [c],
                    shape=shape,
                    index=index,
                    index_value=c.index_value,
                    dtype=c.dtype,
                    name=c.name,
                )
            )
        if op.axis == 0:
            nsplits.extend(series.nsplits[0])
            cum_index += len(series.nsplits[op.axis])
        else:
            nsplits.append(1)
            cum_index += 1

    if op.ignore_index:
        out_chunks = standardize_range_index(out_chunks)

    new_op = op.copy()
    if op.axis == 0:
        nsplits = (tuple(nsplits),)
        return new_op.new_seriess(
            op.inputs,
            out.shape,
            nsplits=nsplits,
            chunks=out_chunks,
            dtype=out.dtype,
            index_value=out.index_value,
            name=out.name,
        )
    else:
        nsplits = (inputs[0].nsplits[0], tuple(nsplits))
        return new_op.new_dataframes(
            op.inputs,
            out.shape,
            nsplits=nsplits,
            chunks=out_chunks,
            dtypes=out.dtypes,
            index_value=out.index_value,
            columns_value=out.columns_value,
        )


# Traceback (ValueError)
Traceback (most recent call last):
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 365, in _wrapped
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/scheduler/graph.py", line 382, in execute_graph
self._execute_graph(compose=compose)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/scheduler/graph.py", line 410, in _execute_graph
self.prepare_graph(compose=compose)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 365, in _wrapped
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 439, in _inner
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/scheduler/graph.py", line 648, in prepare_graph
self._target_tileable_datas + fetch_tileables, tileable_graph)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 439, in _inner
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 348, in build
tileables, tileable_graph=tileable_graph)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 439, in _inner
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 262, in build
self._on_tile_failure(tileable_data.op, exc_info)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 301, in inner
raise exc_info[1].with_traceback(exc_info[2]) from None
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 242, in build
tiled = self._tile(tileable_data, tileable_graph)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 337, in _tile
return super()._tile(tileable_data, tileable_graph)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 203, in _tile
tds = on_tile(tileable_data.op.outputs, tds)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/scheduler/graph.py", line 630, in on_tile
return self.context.wraps(handler.dispatch)(first.op)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/context.py", line 72, in h
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/utils.py", line 439, in _inner
return func(*args, **kwargs)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tiles.py", line 119, in dispatch
tiled = op_cls.tile(op)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/dataframe/merge/concat.py", line 182, in tile
return cls._tile_dataframe(op)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/dataframe/merge/concat.py", line 94, in _tile_dataframe
inputs = [item.rechunk(normalized_nsplits)._inplace_tile() for item in inputs]
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/dataframe/merge/concat.py", line 94, in <listcomp>
inputs = [item.rechunk(normalized_nsplits)._inplace_tile() for item in inputs]
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/dataframe/base/rechunk.py", line 96, in rechunk
chunk_size = get_nsplits(a, chunk_size, itemsize)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tensor/rechunk/core.py", line 38, in get_nsplits
return decide_chunk_sizes(tileable.shape, chunk_size, itemsize)
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tensor/utils.py", line 551, in decide_chunk_sizes
return normalize_chunk_sizes(shape, tuple(chunk_size[j] for j in range(len(shape))))
File "/home/admin/work/tip_dev-pymars-0.6.0a3.zip/mars/tensor/utils.py", line 66, in normalize_chunk_sizes
raise ValueError('chunks shape should be of the same length, '
ValueError: chunks shape should be of the same length, got shape: 100000, chunks: (nan, nan, nan, nan, nan, nan)

# Fixed code
def _tile_series(cls, op):
    from ..indexing.iloc import SeriesIlocGetItem

    out = op.outputs[0]
    inputs = op.inputs
    out_chunks = []

    if op.axis == 1:
        check_chunks_unknown_shape(inputs, TilesError)
        inputs = [item.rechunk(op.inputs[0].nsplits)._inplace_tile() for item in inputs]

    cum_index = 0
    nsplits = []
    for series in inputs:
        for c in series.chunks:
            if op.axis == 0:
                index = (c.index[0] + cum_index,)
                shape = c.shape
            else:
                index = (c.index[0], cum_index)
                shape = (c.shape[0], 1)
            iloc_op = SeriesIlocGetItem(indexes=(slice(None),))
            out_chunks.append(
                iloc_op.new_chunk(
                    [c],
                    shape=shape,
                    index=index,
                    index_value=c.index_value,
                    dtype=c.dtype,
                    name=c.name,
                )
            )
        if op.axis == 0:
            nsplits.extend(series.nsplits[0])
            cum_index += len(series.nsplits[op.axis])
        else:
            nsplits.append(1)
            cum_index += 1

    if op.ignore_index:
        out_chunks = standardize_range_index(out_chunks)

    new_op = op.copy()
    if op.axis == 0:
        nsplits = (tuple(nsplits),)
        return new_op.new_seriess(
            op.inputs,
            out.shape,
            nsplits=nsplits,
            chunks=out_chunks,
            dtype=out.dtype,
            index_value=out.index_value,
            name=out.name,
        )
    else:
        nsplits = (inputs[0].nsplits[0], tuple(nsplits))
        return new_op.new_dataframes(
            op.inputs,
            out.shape,
            nsplits=nsplits,
            chunks=out_chunks,
            dtypes=out.dtypes,
            index_value=out.index_value,
            columns_value=out.columns_value,
        )