Thanks Tim, it is clear now. As you said it is better to allocate memory for the topological neighbours
Some how the doc pages about this is confusing. Because
From the read data doc page
"The “extra special per atom” setting is only needed if new molecules will be added to the system, e.g. by using the fix deposit or fix pour commands, which will have more special 1-2,1-3,1-4 neighbors than any other molecules defined in the data file. This will pre-allocate space in the LAMMPS data structures for storing these neighbors. See the special_bonds and molecule doc pages for more discussion of 1-2,1-3,1-4 neighbors "
There is no reference to fix bond/create in the above statement.
But from the fix bond/create doc page
The “extra special per atom” parameter must typically be set to allow for the new maximum total size (1st + 2nd + 3rd neighbors) of this per-atom list. There are 3 ways to do this. See the read_data or create_box or “special_bonds extra” commands for details.
I think the statements about the “extra special atom” in the read data docs should be modified to include fix bond/create command as well in addition to fix deposit or fix pour commands.