ID:2548837
 
Resolved
In games with a large number of objects on the compiled map, New() was not called for one of the objects.
BYOND Version:513.1513
Operating System:Windows 10 Pro
Web Browser:Firefox 73.0
Applies to:Dream Daemon
Status: Resolved (513.1514)

This issue has been resolved.
Descriptive Problem Summary:
At least one mapped in object's /New() proc is never called.

Versions Tested
  • 513.1513
  • 513.1511
  • 513.1505
  • 512.1488


Numbered Steps to Reproduce Problem:
1) Compile and Run the demo program.
2) The demo code will run on login.

Code Snippet (if applicable) to Reproduce Problem:
Demo Program: https://www.dropbox.com/s/bk5tpuz166rys69/NewMePlease.zip

/atom
var/new_was_called = 0

/atom/New()
new_was_called = 1

// Run the check on login for convenience.
/mob/Login()
. = ..()
src << "Starting Search"
for(var/atom/A in world)
if(!A.new_was_called)
src << "[A] ([A.type]) (REF=\ref[A] at [A.x],[A.y],[A.z] has new_was_called=[A.new_was_called]"
src << "Finished Search"


Expected Results:
The /New() proc should be called on every atom that is loaded from compiled in .dmm files.

Actual Results:
On my test map, one object did not get it's New() proc called.
The green circle (/obj/circle/green) (REF=[0x2010000] at 50,19,3 has new_was_called=0
I cannot help but notice the object's ref of 0x2010000 strongly suggests it was the 65,536th object on the map.

The problem occurs:
  • Every single time, and it is always the same object.
  • I only ran the demo project on Windows, but bug was originaly discovered from an SS13 server running on Linux, so I'd say both.


Workarounds:
Don't use New()
Well this is an odd one. I'll check out your demo and get to the bottom of it. Probably this has existed as long as we've been over the 64K limit.
Lummox JR resolved issue with message:
In games with a large number of objects on the compiled map, New() was not called for one of the objects.