I'm also seeing a CTD almost immediately as the iHarvest on-cast animation begins; Skyrim 1.6.1170
I installed Skypal, overwrote with Skypal NG. In-game, opened the iHarvest configuration, set the quest method to Skypal, reset the mod, waited for the cache purge & rebuild, then once it was "safe to cast again", cast it, and CTD.
The SKSE.log shows:
loading plugin "doticu_skypal" plugin doticu_skypal.dll (00000001 doticu_skypal 00000010) loaded correctly (handle 26) So this does not seem like a problem of the NG component loading an incorrect version of the common library.
CrashLogger (this one) produces an interesting call stack:
Hi there, thanks for the update! However nothing happens (which is an improvement over a CTD lol)
The doticu_skypal.log file (which is now populated, thanks for fixing that too), when set to full trace logging, has:
[2024-06-16 16:06:38.508] [log] [trace] [plugin.cpp:33] SetupLog level set to 0 [2024-06-16 16:06:56.082] [log] [info] [plugin.cpp:2036] Binding Papyrus Functions [2024-06-16 16:08:14.193] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:14.205] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in [2024-06-16 16:08:14.220] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in [2024-06-16 16:08:14.234] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in [2024-06-16 16:08:14.248] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in. [2024-06-16 16:08:14.262] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in [2024-06-16 16:08:14.280] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in. [2024-06-16 16:08:14.454] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:14.468] [log] [warning] [plugin.cpp:1953] From_References no refs passed in. [2024-06-16 16:08:14.498] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:14.512] [log] [warning] [plugin.cpp:1953] From_References no refs passed in. [2024-06-16 16:08:15.276] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:15.289] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in [2024-06-16 16:08:15.308] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in [2024-06-16 16:08:15.322] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in [2024-06-16 16:08:15.340] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in. [2024-06-16 16:08:15.356] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in [2024-06-16 16:08:15.373] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in. [2024-06-16 16:08:15.519] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:15.533] [log] [warning] [plugin.cpp:1953] From_References no refs passed in. [2024-06-16 16:08:15.569] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:15.587] [log] [warning] [plugin.cpp:1953] From_References no refs passed in. [2024-06-16 16:08:16.073] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:16.087] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in [2024-06-16 16:08:16.101] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in [2024-06-16 16:08:16.116] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in [2024-06-16 16:08:16.134] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in. [2024-06-16 16:08:16.148] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in [2024-06-16 16:08:16.164] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in. [2024-06-16 16:08:16.325] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:16.342] [log] [warning] [plugin.cpp:1953] From_References no refs passed in. [2024-06-16 16:08:16.375] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in [2024-06-16 16:08:16.392] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
Checking plugin.cpp:422, I see the warning message issued when the akFormList is empty. Looking at the iHarves source code:
$ grep -i "skypal_references.Filter_Bases_Form_List" *.psc ih_floralearnercontrollerscript.psc: refs = skypal_references.Filter_Bases_Form_List(refs, IH_ExaminedTypes, "!") ih_floralearnercontrollerscript.psc:refs = skypal_references.Filter_Bases_Form_List(refs, IH_ExaminedTypes, "!") ih_persistentdatascript.psc:refs = skypal_references.Filter_Bases_Form_List(refs, IH_LearnedTypes, "") ih_persistentdatascript.psc: ; refs = skypal_references.Filter_Bases_Form_List(refs, IH_SpawnableBase_01, "") Separately, looking at the iHarvest.log, I see stuff like
[06/16/2024 - 05:42:04PM] Casting by [Actor < (00000014)>], alt=100, alch=74, delay=1000000, minDelay=347830, accel=0.713000, radius=3740, maxRadius=3740, dual=False [06/16/2024 - 05:42:05PM] Workers finished. [06/16/2024 - 05:42:05PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:05PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:05PM] No harvestables found. [06/16/2024 - 05:42:05PM] Starting skypal learner routine / last count: 0 [06/16/2024 - 05:42:06PM] Workers finished. [06/16/2024 - 05:42:06PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:06PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:06PM] No harvestables found. [06/16/2024 - 05:42:06PM] Starting skypal learner routine / last count: 0 [06/16/2024 - 05:42:06PM] Workers finished. [06/16/2024 - 05:42:06PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:06PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:07PM] No harvestables found. [06/16/2024 - 05:42:07PM] Starting skypal learner routine / last count: 0 [06/16/2024 - 05:42:07PM] Workers finished. [06/16/2024 - 05:42:07PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:07PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:07PM] No harvestables found. [06/16/2024 - 05:42:07PM] Starting skypal learner routine / last count: 0 [06/16/2024 - 05:42:08PM] Workers finished. [06/16/2024 - 05:42:08PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:08PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:08PM] No harvestables found. [06/16/2024 - 05:42:08PM] Starting skypal learner routine / last count: 0 [06/16/2024 - 05:42:09PM] Workers finished. [06/16/2024 - 05:42:09PM] Results array: [1, 1, 1, 1, 1, 1, 1, 1] [None, None, None, None, None, None, None, None] [06/16/2024 - 05:42:09PM] GetHarvestable() could not find any flora; running learning routine and returning None [06/16/2024 - 05:42:09PM] No harvestables found. [06/16/2024 - 05:42:09PM] Starting skypal learner routine / last count: 0
This suggests the iHarvest learning route is failing; inspecting the save game with Fallrim Tools, the FormLists for ih_LearnedTypes and ih_ExaminedTypes are both unchanged (they're empty in the base record). Looking at the RunLearnerSkypal function in ih_FloraLearnerControllerScript.psc, these are all relying on Skypal for learning...
As an aside, I noticed there are a few user trace printouts in the iHarvest log that are commented out in the source code, so the compiled scripts are not entirely the source scripts. I'm going to recompile iHarvest from source, just in case; and also to re-enable all the debugging printouts that got commented-out.
Ok, due to iHarvest's "soft dependencies", I went a different route.
Set iHarvest back to Story Manager. Cast the spell. This does an initial population of the respective formlists. Then switch back to SkyPal mode. Now with the lists not empty, further learning happens as expected, and iHarvest works.
This suggests to me that, unless you changed how SkyPal NG behaves such that the learning no longer works, this may be a logic error on iHarvest, when started in Skypal mode.
Hey yep that’s on iHarvist’s end. This mod doesn’t change how Skypal works. This mod and Skypal don’t do anything on their own. Another mod’s scripts have to use the functions in this mod.
For example All() gets all objectreferences in game.
Also the [warning] no refs passed in, means that another script, in this case iHarvest, tried to filter an empty array with zero objectreferences in it.
Shame iHarvest detects this as an older version and doesn't apply the collision fix. I don't know if that is a problem sided with this update to SkyPal or if that is iHarvest sided (it could be either, it uses SkyPal's feature to change the collision layer). Happy to see this library getting updated for once though, meaning I can use iHarvest without much fear that the critters will suddenly stop spawning!
That was on my end, I had the comparisons for the Has_Version function backwards. I just uploaded a new version 1.1.1 that fixes that issue. If you could test to see if it works, and setting collision layer actually works I'd be grateful.
The mod seems to no longer assume the version of it is outdated, so that is good, but the collision layer still doesn't seem to work... I would try it on a new save file, but I am struggling with the whole "Harvest doesn't spawn critters" issue that sometimes appears when running 1.2.0+ on AE, and so I only got an older save to work with, and there it isn't switching the collision layer correctly.
22 comments
I installed Skypal, overwrote with Skypal NG. In-game, opened the iHarvest configuration, set the quest method to Skypal, reset the mod, waited for the cache purge & rebuild, then once it was "safe to cast again", cast it, and CTD.
The SKSE.log shows:
loading plugin "doticu_skypal"
plugin doticu_skypal.dll (00000001 doticu_skypal 00000010) loaded correctly (handle 26)
So this does not seem like a problem of the NG component loading an incorrect version of the common library.
CrashLogger (this one) produces an interesting call stack:
PROBABLE CALL STACK:
[ 0] 0x7FF6B8D7B0B3SkyrimSE.exe+030B0B3 -> 20543+0x43 mov rdi, [rsi+0xF8]
[ 1] 0x7FFC113E5CDE doticu_skypal.dll+0055CDE
[ 2] 0x7FFC113C1426 doticu_skypal.dll+0031426
[ 3] 0x7FFC113CA875 doticu_skypal.dll+003A875
[ 4] 0x7FFC113C2488 doticu_skypal.dll+0032488
[ 5] 0x7FF6B9EADE05SkyrimSE.exe+143DE05 -> 104651+0x205 test al, al
[ 6] 0x7FF6B9EBEAF9SkyrimSE.exe+144EAF9 -> 104853+0x789 mov r14d, eax
[ 7] 0x7FF6B9EBF7B3SkyrimSE.exe+144F7B3 -> 104857+0x193 call 0x00007FF6B973A240
[ 8] 0x7FF6B9EB4314SkyrimSE.exe+1444314 -> 104767+0x104 lea r8, [rbp+0x67]
[ 9] 0x7FF6B94309E7SkyrimSE.exe+09C09E7 -> 53926+0xEE7 test r15b, r15b
[10] 0x7FF6B9142CF3SkyrimSE.exe+06D2CF3 -> 39074+0x23 xor ebx, ebx
[11] 0x7FF6B9767888SkyrimSE.exe+0CF7888 -> 69378+0xD8 mov ecx, [rbx+0x0C]
[12] 0x7FF6B9767E51SkyrimSE.exe+0CF7E51 -> 69380+0x361 mov r15d, eax
[13] 0x7FF6B97661DASkyrimSE.exe+0CF61DA -> 69344+0x8A movzx eax, byte ptr [rbx+0xA74]
[14] 0x7FF6B9740DBDSkyrimSE.exe+0CD0DBD -> 68445+0x3D mov rcx, [0x00007FF6BBC3C318]
[15] 0x7FFCF0F77344KERNEL32.DLL+0017344
[16] 0x7FFCF1AE26B1ntdll.dll+00526B1
With registers:
REGISTERS:
RAX 0x1B62AC546E0(void*)
RCX 0x768 (size_t) [1896]
RDX 0x0 (size_t) [0]
RBX 0x14(size_t) [20]
RSP 0x1F730F9730 (void*)
RBP 0x5 (size_t) [5]
RSI 0x44E6E00043870000 (size_t) [4964901930960093184]
RDI 0x1B7A399EE00(TESObjectCELL*)
File: "Occlusion.esp"
Modified by: Skyrim.esm -> Update.esm -> Ulvenwald.esp -> Unique Flowers & Plants.esp -> Occlusion.esp
Flags: 0x00040009
EditorID: "Wilderness"
FormID: 0x0000713A
FormType: Cell (60)
File: "Occlusion.esp"
Modified by: Skyrim.esm -> Update.esm -> Ulvenwald.esp -> Unique Flowers & Plants.esp -> Occlusion.esp
Flags: 0x00040009 kDestructible | kInitialized
EditorID: "Wilderness"
FormID: 0x0000713A
FormType: Cell (60)
R8 0x1B6332F9AD0(void*)
R9 0x1 (size_t) [1]
R10 0x8000 (size_t) [32768]
R11 0x1F730F95F0 (void*)
R12 0x7FFC11438A38 (void* -> doticu_skypal.dll+00A8A38 loopne 0x00007FFC11438A97)
R13 0x4 (size_t) [4]
R14 0x1B629D2A3E8(char*) "j"
R15 0x1F730F98B0 (std::_Func_impl_no_alloc<`Grid'::`2'::<lambda_1>,RE::BSContainer::ForEachResult,RE::TESObjectREFR &>*)
In the rest of the stack, doticu_skypal.dll appears 18 times; I can share that if relevant.
The doticu_skypal.log file (which is now populated, thanks for fixing that too), when set to full trace logging, has:
[2024-06-16 16:06:38.508] [log] [trace] [plugin.cpp:33] SetupLog level set to 0
[2024-06-16 16:06:56.082] [log] [info] [plugin.cpp:2036] Binding Papyrus Functions
[2024-06-16 16:08:14.193] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:14.205] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in
[2024-06-16 16:08:14.220] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in
[2024-06-16 16:08:14.234] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in
[2024-06-16 16:08:14.248] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in.
[2024-06-16 16:08:14.262] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in
[2024-06-16 16:08:14.280] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in.
[2024-06-16 16:08:14.454] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:14.468] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
[2024-06-16 16:08:14.498] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:14.512] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
[2024-06-16 16:08:15.276] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:15.289] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in
[2024-06-16 16:08:15.308] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in
[2024-06-16 16:08:15.322] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in
[2024-06-16 16:08:15.340] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in.
[2024-06-16 16:08:15.356] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in
[2024-06-16 16:08:15.373] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in.
[2024-06-16 16:08:15.519] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:15.533] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
[2024-06-16 16:08:15.569] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:15.587] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
[2024-06-16 16:08:16.073] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:16.087] [log] [warning] [plugin.cpp:604] Filter_Distance no refs passed in
[2024-06-16 16:08:16.101] [log] [warning] [plugin.cpp:648] Filter_Enabled no refs passed in
[2024-06-16 16:08:16.116] [log] [warning] [plugin.cpp:574] Filter_Deleted no refs passed in
[2024-06-16 16:08:16.134] [log] [warning] [plugin.cpp:1644] Filter_Potential_Thieves no refs passed in.
[2024-06-16 16:08:16.148] [log] [warning] [plugin.cpp:870] Filter_Keywords no refs passed in
[2024-06-16 16:08:16.164] [log] [warning] [plugin.cpp:1897] Sort_Distance no refs passed in.
[2024-06-16 16:08:16.325] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:16.342] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
[2024-06-16 16:08:16.375] [log] [warning] [plugin.cpp:422] Filter_Bases_Form_List no bases passed in
[2024-06-16 16:08:16.392] [log] [warning] [plugin.cpp:1953] From_References no refs passed in.
Checking plugin.cpp:422, I see the warning message issued when the akFormList is empty. Looking at the iHarves source code:
$ grep -i "skypal_references.Filter_Bases_Form_List" *.psc
ih_floralearnercontrollerscript.psc: refs = skypal_references.Filter_Bases_Form_List(refs, IH_ExaminedTypes, "!")
ih_floralearnercontrollerscript.psc:refs = skypal_references.Filter_Bases_Form_List(refs, IH_ExaminedTypes, "!")
ih_persistentdatascript.psc:refs = skypal_references.Filter_Bases_Form_List(refs, IH_LearnedTypes, "")
ih_persistentdatascript.psc: ; refs = skypal_references.Filter_Bases_Form_List(refs, IH_SpawnableBase_01, "")
Separately, looking at the iHarvest.log, I see stuff like
[06/16/2024 - 05:42:04PM] Casting by [Actor < (00000014)>], alt=100, alch=74, delay=1000000, minDelay=347830, accel=0.713000, radius=3740, maxRadius=3740, dual=False
[06/16/2024 - 05:42:05PM] Workers finished.
[06/16/2024 - 05:42:05PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:05PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:05PM] No harvestables found.
[06/16/2024 - 05:42:05PM] Starting skypal learner routine / last count: 0
[06/16/2024 - 05:42:06PM] Workers finished.
[06/16/2024 - 05:42:06PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:06PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:06PM] No harvestables found.
[06/16/2024 - 05:42:06PM] Starting skypal learner routine / last count: 0
[06/16/2024 - 05:42:06PM] Workers finished.
[06/16/2024 - 05:42:06PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:06PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:07PM] No harvestables found.
[06/16/2024 - 05:42:07PM] Starting skypal learner routine / last count: 0
[06/16/2024 - 05:42:07PM] Workers finished.
[06/16/2024 - 05:42:07PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:07PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:07PM] No harvestables found.
[06/16/2024 - 05:42:07PM] Starting skypal learner routine / last count: 0
[06/16/2024 - 05:42:08PM] Workers finished.
[06/16/2024 - 05:42:08PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:08PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:08PM] No harvestables found.
[06/16/2024 - 05:42:08PM] Starting skypal learner routine / last count: 0
[06/16/2024 - 05:42:09PM] Workers finished.
[06/16/2024 - 05:42:09PM] Results array:
[1, 1, 1, 1, 1, 1, 1, 1]
[None, None, None, None, None, None, None, None]
[06/16/2024 - 05:42:09PM] GetHarvestable() could not find any flora; running learning routine and returning None
[06/16/2024 - 05:42:09PM] No harvestables found.
[06/16/2024 - 05:42:09PM] Starting skypal learner routine / last count: 0
This suggests the iHarvest learning route is failing; inspecting the save game with Fallrim Tools, the FormLists for ih_LearnedTypes and ih_ExaminedTypes are both unchanged (they're empty in the base record). Looking at the RunLearnerSkypal function in ih_FloraLearnerControllerScript.psc, these are all relying on Skypal for learning...
As an aside, I noticed there are a few user trace printouts in the iHarvest log that are commented out in the source code, so the compiled scripts are not entirely the source scripts. I'm going to recompile iHarvest from source, just in case; and also to re-enable all the debugging printouts that got commented-out.
Set iHarvest back to Story Manager. Cast the spell. This does an initial population of the respective formlists. Then switch back to SkyPal mode. Now with the lists not empty, further learning happens as expected, and iHarvest works.
This suggests to me that, unless you changed how SkyPal NG behaves such that the learning no longer works, this may be a logic error on iHarvest, when started in Skypal mode.
For example All() gets all objectreferences in game.
Also the [warning] no refs passed in, means that another script, in this case iHarvest, tried to filter an empty array with zero objectreferences in it.
Does somebody got it running with 1.6.1130?
Thx
Happy modding!