ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   AddOn Help/Support (https://www.esoui.com/forums/forumdisplay.php?f=164)
-   -   3 hours to track down the CTD (https://www.esoui.com/forums/showthread.php?t=4400)

QuadroTony 03/09/15 11:49 AM

3 hours to track down the CTD
 
now i can be sure its this addons



if i turn OFF ANY OF THIS ADDONS - CDT GONE

how to reproduce
- steal some items
- pay the guard, in the moment you will pay and guard will take away stolen goods - you will got CTD

any ideas how to fix?

Ayantir 03/09/15 11:51 AM

could you disable cmld? it has not been updated, i must to do this, but don't have really time, maybe today, tomorrow, don't know.

Randactyl 03/09/15 11:53 AM

I CTD'd last night when a guard took seven items off of my body for the Indecent Exposure achievement and one other item out of my inventory. The only addons I share with that list are AwesomeGuildStore and Sous Chef.

QuadroTony 03/09/15 11:56 AM

yes

just now i turn all my other 20+ addons for alt character
but turn off AGS

guess what? CTD too:mad:(must be smthing else)

but 20+ addons without CMLD all okay

QuadroTony 03/09/15 11:57 AM

Quote:

Originally Posted by Randactyl (Post 19402)
I CTD'd last night when a guard took seven items off of my body for the Indecent Exposure achievement and one other item out of my inventory. The only addons I share with that list are AwesomeGuildStore and Sous Chef.



with this set of addons like in first post i got 100% chance of CTD :(

btw if i replace FilterIt with Advanced filters CTD gone too

might be smthing in new stolen subfilters in FilterIt

sirinsidiator 03/09/15 01:33 PM

AGS itself does not do anything outside of guild stores.
The bulk of it's code is only initialized when you visit a guild store for the first time after a UI load.

The only thing that might have something to do with the crashes is libFilters, which gets initialized immediately:
Lua Code:
  1. local libFilters = LibStub("libFilters")
  2. libFilters:HookAdditionalFilter(LAF_GUILDSTORE, BACKPACK_TRADING_HOUSE_LAYOUT_FRAGMENT_BASIC)
  3. libFilters:HookAdditionalFilter(LAF_GUILDSTORE, BACKPACK_TRADING_HOUSE_LAYOUT_FRAGMENT_ADVANCED)

Baertram 03/09/15 01:40 PM

My crash to desktop does happen if I open a guod store and play a bit with the different tabs, close it, do something else, open it again -> At this point sometimes the CTD happens

Got another strange problem:
If I do a /reloadui I crash back to the login mask sometimes and it tells me the server can't be reached.
Ot it tells me some other error message.

I tried to turn of all addons and this fixes it. HAve to test each I guess :(

sirinsidiator 03/09/15 01:55 PM

I also crash quite often when I switch tabs in guild store since the patch. Not sure why or how I can reproduce it though. :(
It would be so much easier if we got some kind of crash log which shows the call stack leading to the CTD. Maybe a certain person reads this and gets creative? ;)

Baertram 03/09/15 02:01 PM

I had these crashes already before the patch 1.6.
Can't reproduce it with all chars but with some of them. It happens most of the time if I try to change a tab to the "Materials" tab (or some subfilters of AdvancedFilters.
Or if I open the guild bank and it was still at the materials tab or a subtab (like smithing crafting materials).

I guess it has to do with the materials somehow, because it never seems to happen if I am at another tab (armor, weapons).
Maybe it is just an endless looooooooooooooooop :rolleyes: like Garkin has told me before and will just happen if there are many stacks of materials, which won#t happen with armor/weapons.

QuadroTony 03/09/15 02:14 PM

Quote:

Originally Posted by sirinsidiator (Post 19405)
AGS itself does not do anything outside of guild stores.
The bulk of it's code is only initialized when you visit a guild store for the first time after a UI load.

The only thing that might have something to do with the crashes is libFilters, which gets initialized immediately:
Lua Code:
  1. local libFilters = LibStub("libFilters")
  2. libFilters:HookAdditionalFilter(LAF_GUILDSTORE, BACKPACK_TRADING_HOUSE_LAYOUT_FRAGMENT_BASIC)
  3. libFilters:HookAdditionalFilter(LAF_GUILDSTORE, BACKPACK_TRADING_HOUSE_LAYOUT_FRAGMENT_ADVANCED)

well you ar right, but if you try to delete all addons from the folder, except this four
and run the behaviour i describe - i bet you will get CTD
and if you disable AGS or one of those addons - CTD gone:)

circonian 03/09/15 02:24 PM

Quote:

Originally Posted by QuadroTony (Post 19400)
now i can be sure its this addons



if i turn OFF ANY OF THIS ADDONS - CDT GONE

how to reproduce
- steal some items
- pay the guard, in the moment you will pay and guard will take away stolen goods - you will got CTD

I installed all of those & tried the steps you posted over & over, it never crashed. I tried it at least 10-15 times. I don't know which of your addons is causing it, but my guess is that it is the same problem that some addons had with swapping horses (only its much worse here).

When you swap horses that change your carrying capacity the game updates every slot in your backpack.

When you get caught and pay a bounty, the game updates all slots in your BACKPACK & BANK so its much worse than the horse problem. Although I don't know why it would update slots in the bank...you can't deposit stolen items in the bank can you??

My guess is some addons your using are not excluding old items in the SingleSlotUpdate event and then somethings going wrong when they are all trying to update every slot in the backpack & bank at the same time.

EDIT: I forgot to mention, the stolen items filters in FilterIt would have nothing to do with it. They don't do anything unless you press one of the stolen item buttons.

QuadroTony 03/09/15 02:29 PM

Quote:

Originally Posted by circonian (Post 19412)
I installed all of those & tried the steps you posted over & over, it never crashed. I tried it at least 10-15 times. I don't know which of your addons is causing it, but my guess is that it is the same problem that some addons had with swapping horses (only its much worse here).

When you swap horses that change your carrying capacity the game updates every slot in your backpack.

When you get caught and pay a bounty, the game updates all slots in your BACKPACK & BANK so its much worse than the horse problem. Although I don't know why it would update slots in the bank...you can't deposit stolen items in the bank can you??

My guess is some addons your using are not excluding old items in the SingleSlotUpdate event and then somethings going wrong when they are all trying to update every slot in the backpack & bank at the same time.

EDIT: I forgot to mention, the stolen items filters in FilterIt would have nothing to do with it. They don't do anything unless you press one of the stolen item buttons.


mby the matter in bag space? i have 80 on this alt hero i tested, and you? will test on my main with 170 slots only when my 30k bounty will dissapear:D

Randactyl 03/09/15 02:37 PM

Quote:

Originally Posted by circonian (Post 19412)
When you get caught and pay a bounty, the game updates all slots in your BACKPACK & BANK so its much worse than the horse problem. Although I don't know why it would update slots in the bank...you can't deposit stolen items in the bank can you??

No, you can't put stolen items in your bank. Updating the bank is completely unnecessary...

Baertram 03/09/15 02:43 PM

Maybe they use it to refresh the shared_inventories somehow. But for me it makes no sense.

@Circonian
-> Are we able to pre-hook this and abort the bank scan somehow?

Randactyl 03/09/15 02:52 PM

That's an idea. Maybe we can get @merlight to throw it into his random ZOS fixes addon too :D

circonian 03/09/15 05:50 PM

Quote:

Originally Posted by QuadroTony (Post 19413)
mby the matter in bag space? i have 80 on this alt hero i tested, and you? will test on my main with 170 slots only when my 30k bounty will dissapear:D

I tested it on a char that has 80 backpack slots with 120 bank slots, but my backpack only had like 15 items in it. The bank is completely full.
The slots only get updated if there is an item in the slot so whether or not those slots have items in them will also make a difference.

Why don't you just fence: sell/launder off your stolen items & then go kill yourself, its quicker than waiting :P

Baertram 03/09/15 06:24 PM

*cough*
THE PRIDE!
:p

Quote:

Originally Posted by circonian (Post 19426)
I tested it on a char that has 80 backpack slots with 120 bank slots, but my backpack only had like 15 items in it. The bank is completely full.
The slots only get updated if there is an item in the slot so whether or not those slots have items in them will also make a difference.

Why don't you just fence: sell/launder off your stolen items & then go kill yourself, its quicker than waiting :P


circonian 03/09/15 06:28 PM

Quote:

Originally Posted by Baertram (Post 19417)
Maybe they use it to refresh the shared_inventories somehow. But for me it makes no sense.

@Circonian
-> Are we able to pre-hook this and abort the bank scan somehow?

I don't think so.

Baertram 03/09/15 07:15 PM

Ok, are we able to detect if we get caught and prevent executing our addon functions etc. to each bag and bank item by help of a variable we set, if we get caught?
Is there an event if we get caught and after we payed or run away?

circonian 03/09/15 09:49 PM

Quote:

Originally Posted by Baertram (Post 19433)
Ok, are we able to detect if we get caught and prevent executing our addon functions etc. to each bag and bank item by help of a variable we set, if we get caught?
Is there an event if we get caught and after we payed or run away?

There is no event & no "specific" InteractionType for it, and we don't have access to any of that code.

The only thing I could think of (is very sloppy) Surely theres a better way than this, but maybe it will spark an idea. I didn't test any of this, its just an idea.

To detect getting caught you could do something like hook the INTERACT_WINDOW:BeginInteraction() and check to see if GetInteractionType() returns INTERACT_CONVERSATION, and then check the chatter: ZO_ChatterOption1:GetText() and search the string for some text related to getting caught, something like: "Clear my bounty"
Or maybe just the INTERACT_WINDOW:SelectChatterOptionByIndex(optionIndex) and if the optionIndex == 1, then check the chatter text.

I couldn't think of a decent way to know when its done updating. Only thing I could think of would be to just block your code for some set amount of time with a flag. Like when you get caught set: dontRunCode = true and then On EndInteraction() do a callLater and after a few ms set it back to false.

But if you exclude code from running on old items in the EVENT_INVENTORY_SINGLE_SLOT_UPDATE, none of this matters.
If you need to run code on old items it might be easier to find a different way to handle that instead of inside that event. It would just depend on what you need updated and when does it really need to be updated.


All times are GMT -6. The time now is 08:10 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI