Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

measurement.WindowOverview.ListView.Entry is null #11

Closed
asdfasdf100500 opened this issue Mar 14, 2017 · 14 comments
Closed

measurement.WindowOverview.ListView.Entry is null #11

asdfasdf100500 opened this issue Mar 14, 2017 · 14 comments

Comments

@asdfasdf100500
Copy link

WindowOverview.ListView.Entry is null

Seems to affect other ListViews too

Probably due to recent EVE update

@Viir
Copy link
Collaborator

Viir commented Mar 14, 2017

I will add guidance about how to go about such an issue soon.
It will probably start with how to reproduce the issue in Visual Studio using a process sample from the eve online client.

Anyone who wants to work on this will need such a sample. See the guide at http://forum.botengine.de/t/collecting-samples-for-memory-reading-development/50 for how to collect such a sample.

@asdfasdf100500
Copy link
Author

I'm more than willling to try and fix this according to your guide.

I work as a software engineer, but I have very little experience with Python memory management and memory reading in general.

@Statter
Copy link

Statter commented Mar 15, 2017

I can confirm, that the Entry object is "null ". It has become that right after the latest update.
WindowInventory.[Long path].[AnyViewType].Entry is null
WindowOverview.[AnyViewType].Entry is null
I think, that all windows are affected.
They are null both in Parsed and not Parsed memory measurments.

@Viir
Copy link
Collaborator

Viir commented Mar 15, 2017

@asdfasdf100500 Thanks for offering to help with this. Usually, adjustments to python reading code are not needed. Most of the time when something broke, CCP simply changed some symbols for types or type members in their code.

I added the memory reading code to the repository as well as guidance on how to reproduce the memory reading and inspect its results. See the guide at https://github.com/Arcitectus/Sanderling/blob/master/guide/Adapt-memory-reading.md

@Viir
Copy link
Collaborator

Viir commented Mar 16, 2017

WindowOverview.ListView.Entry is null
Seems to affect other ListViews too

@asdfasdf100500, what about WindowOverview.ListView? Is this null too?
As far as I see, everything that could end up in the Entry property has to go through SictAuswertGbsListViewport<EntryT>.Berecne. If the ListView itself is found, we should take a closer look at that method and the intermediate results there.
Is there the Scroll in there found?

@Statter
Copy link

Statter commented Mar 16, 2017

image 2

@Viir
Copy link
Collaborator

Viir commented Mar 16, 2017

Ok, so in the screenshot of the API explorer @Statter posted I see that the Scroll property the instance of ListViewAndControl<EntryT> is not null.
Now there is not much more left in between computation of Scroll and Entry:

  • Do we have instances for ScrollClipperContentAst?
  • AFAIR, the number of items in ScrollClipperContentAst?.ListeChild should equal the number of entries in the list. What do we have in there?

@dreambottle
Copy link
Contributor

The ScrollClipperContentAst itself is not null, but the ScrollClipperContentAst.ListeChild returns null for the Overview window

@dreambottle
Copy link
Contributor

How does Bib3.Glob.SuuceFlacMengeAstMitPfaad() translate to English?

@dreambottle
Copy link
Contributor

Ok, I think I found the root cause. Please review #12.

P.S. Sanderling works notably faster with the sensor branch, where you removed linking to the memreading dll.

@Viir
Copy link
Collaborator

Viir commented Mar 18, 2017

P.S. Sanderling works notably faster with the sensor branch, where you removed linking to the memreading dll.

@dreambottle Thank you for reviewing the functionality of this change. I merged this into master together with your fix.

@Viir
Copy link
Collaborator

Viir commented Mar 18, 2017

A summary of what I see in the commit ad1c44f contributed by dreambottle:

First some context

The memory reading expects the ListViews items to be contained in a Scroll. The scroll UIElement contains the actual item in one of its child nodes. The scroll can also contain other stuff like a scroll handle the user can interact with. So when reading the Scroll, we want to find different things in there and the items are to be found in the portion labeled as Content in the code.

Dreambottle changed how the Content node is selected

The SuuceFlacMengeAstFrüheste method used for this selection step first does a Breadth-first search within the node passed as the first argument and returns the first node which matches the predicate which is passed as the second argument. The changed line only affects the predicate and makes it more restrictive.
So the reason for the old version failing could be the introduction of another node in the UITree which matches the predicate and comes first in the breadth-first order but is not the node which contains the nodes for the items in the list view.

@Viir
Copy link
Collaborator

Viir commented Mar 19, 2017

I created release v17.02.17 containing the fix from dreambottle.
@asdfasdf100500 does that release resolve the issue?

@asdfasdf100500
Copy link
Author

Yup, works perfectly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants