After some testing I'm certain there is no recursive calls happening. I do think that either there is a bug, or I'm misunderstanding the use case of compile_object.
When using efun::load_object and compile_object is called, everything seems to work as expected. When using efun::clone_object, if I provide a cloned object as the return for compile_object, the driver does seem to then clone my cloned object. What I was expecting is the driver to simply use the cloned object that I returned from compile_object.
Here is the driver_info output as suggested. I am only reporting the driver_info if the object is a clone. As you can see it clones twice - the first is my clone within compile_object, then I'm assuming the second is from the driver then cloning my cloned object.
558 ' bin_command' in ' obj/player.c' (' obj/player#95')
line 927
5562 ' bin_command' in ' bin/bin_d.c' (' bin/bin_d')
line 82
5927 ' _clone' in ' bin/wiz/_clone.c' (' bin/wiz/_clone')
line 43
7929 ' CATCH' in (' bin/wiz/_clone')
8082 ' compile_object' in ' secure/master.c' (' secure/master')
line 1161
8252 ' compile_object' in 'players/test/virtual/arm.c'
('players/test/virtual/arm') line 5
8258 <lambda 0x55d1a26e5e92> in 'domains/areas/testarea/gear/test.c'
('domains/areas/testarea/gear/test#4287') offset 8
8301 ' _create_fun' in ' secure/master.c' (' secure/master')
line 564
8305 <lambda 0x55d1a2902112> in 'players/test/virtual/arm.c'
('players/test/virtual/arm') offset 6
14813 ' reset' in 'domains/areas/testarea/gear/test.c'
('domains/areas/testarea/gear/test#4287') line 26
558 ' bin_command' in ' obj/player.c' (' obj/player#95')
line 927
5562 ' bin_command' in ' bin/bin_d.c' (' bin/bin_d')
line 82
5927 ' _clone' in ' bin/wiz/_clone.c' (' bin/wiz/_clone')
line 43
18770 ' CATCH' in (' bin/wiz/_clone')
18776 <lambda 0x55d1a26e5e92> in 'domains/areas/testarea/gear/test.c'
('players/test/virtual/arm:testie2#4288') offset 8
18819 ' _create_fun' in ' secure/master.c' (' secure/master')
line 564
18823 <lambda 0x55d1a2902112> in ' bin/wiz/_clone.c' ('
bin/wiz/_clone') offset 6
25331 ' reset' in 'domains/areas/testarea/gear/test.c'
('players/test/virtual/arm:testie2#4288') line 26