# Buggy code
def __call__(self, a, repeats):
    axis = self._axis
    a = astensor(a)
    if axis is None:
        a = ravel(a)

    ax = axis or 0

    if not isinstance(repeats, Integral):
        if not isinstance(repeats, Tensor):
            repeats = np.asarray(repeats)
            if repeats.size == 1:
                repeats = int(repeats[0])
                size = repeats * a.shape[axis or 0]
            elif a.shape[ax] == 1:
                size = repeats = int(repeats.sum())
            else:
                size = repeats.sum()
        else:
            size = np.nan
        if not isinstance(repeats, Integral):
            if repeats.ndim != 1:
                raise ValueError("repeats should be 1-d tensor")
            broadcast_shape(repeats.shape, a.shape[ax : ax + 1])
    else:
        size = a.shape[axis or 0] * repeats

    shape = a.shape[:ax] + (size,) + a.shape[ax + 1 :]
    self._dtype = a.dtype
    self._sparse = a.issparse()

    inputs = [a]
    if isinstance(repeats, Tensor):
        inputs.append(repeats)
    else:
        self._repeats = repeats

    return self.new_tensor(inputs, shape, order=TensorOrder.C_ORDER)


# Traceback (AttributeError)
In [3]: import pandas as pd

In [4]: data = pd.DataFrame(np.arange(20).reshape((4, 5)) + 1, columns=['a', 'b', 'c', 'd', 'e'])

In [6]: df = md.DataFrame(data)

In [7]: df.groupby(['a','b']).size().execute()
Unexpected exception occurred in enter_build_mode.<locals>.inner.
Traceback (most recent call last):
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 353, in _wrapped
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 493, in inner
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/scheduler/graph.py", line 633, in prepare_graph
self._target_tileable_datas + fetch_tileables, tileable_graph)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 399, in _wrapped
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 493, in inner
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 350, in build
tileables, tileable_graph=tileable_graph)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 399, in _wrapped
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 493, in inner
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 263, in build
self._on_tile_failure(tileable_data.op, exc_info)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 302, in inner
raise exc_info[1].with_traceback(exc_info[2]) from None
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 243, in build
tiled = self._tile(tileable_data, tileable_graph)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 338, in _tile
return super()._tile(tileable_data, tileable_graph)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 203, in _tile
tds = on_tile(tileable_data.op.outputs, tds)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/scheduler/graph.py", line 615, in on_tile
return self.context.wraps(handler.dispatch)(first.op)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/context.py", line 69, in h
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/utils.py", line 399, in _wrapped
return func(*args, **kwargs)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/tiles.py", line 119, in dispatch
tiled = op_cls.tile(op)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/dataframe/groupby/aggregation.py", line 481, in tile
return cls._tile_with_tree(op)
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/dataframe/groupby/aggregation.py", line 412, in _tile_with_tree
index = out_df.index_value.to_pandas()
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/dataframe/core.py", line 283, in to_pandas
return self._index_value.to_pandas()
File "/Users/hekaisheng/Documents/mars_dev/mars/mars/dataframe/core.py", line 197, in to_pandas
sortorder=self._sortorder, names=self._names)
AttributeError: _sortorder

# Fixed code
def __call__(self, a, repeats):
    axis = self._axis
    a = astensor(a)
    if axis is None:
        a = ravel(a)

    ax = axis or 0

    if not isinstance(repeats, Integral):
        if not isinstance(repeats, Tensor):
            repeats = np.asarray(repeats)
            if repeats.size == 1:
                repeats = int(repeats[0])
                size = repeats * a.shape[axis or 0]
            elif a.shape[ax] == 1:
                size = repeats = int(repeats.sum())
            else:
                size = int(repeats.sum())
        else:
            size = np.nan
        if not isinstance(repeats, Integral):
            if repeats.ndim != 1:
                raise ValueError("repeats should be 1-d tensor")
            broadcast_shape(repeats.shape, a.shape[ax : ax + 1])
    else:
        size = a.shape[axis or 0] * repeats

    shape = a.shape[:ax] + (size,) + a.shape[ax + 1 :]
    self._dtype = a.dtype
    self._sparse = a.issparse()

    inputs = [a]
    if isinstance(repeats, Tensor):
        inputs.append(repeats)
    else:
        self._repeats = repeats

    return self.new_tensor(inputs, shape, order=TensorOrder.C_ORDER)