# MindSpore PyNative模式下The pointer\[top\_cell\_\] is null错误

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): Ascend/GPU/CPU

软件环境: MindSpore 版本: 2.2.10

执行模式（静态图/动态图）： 不限

Python 版本: 3.8

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

MindSpore动态图下可以使用自定义数据集进行网络训练，但是当使用自定义数据集时，一不小心就会出现以下错误：

2.2 报错信息

![](figures/zh-cn_image_0000002143233445.png)**3. 根因分析**

当出现该错误时，只是看到有一个指针为空了，但是python的调用栈却是在数据集里面。于是打开相应的自定义数据集脚本：/home/cjj/models/official/cv/warpctc/src/dataset.py\(57\)

![](figures/zh-cn_image_0000002143234745.png)发现此处有一个 image += 1.0的tensor操作。于是将该操作删除后，发现程序正常运行。

该错误根因隐藏较深，由于MindSpore框架对于单算子的执行只支持单线程操作，但是在自定义数据集\_\_getitem\_\_函数中使用了Tensor的运算操作，即会调到框架的算子执行，由于数据集的处理使用了多线程操作，因此导致整体的执行顺序错乱，出现空指针的错误。因此到看到空指针错误且错误在generator.cc中时，就是在数据集中错误使用了Tensor的运算操作。

**4. 解决方案**

1、根据提示的调用栈信息，找到自定义数据集脚本中出错的位置。

2、将自定义数据集中的Tensor操作改为使用原生numpy进行计算。

