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

fix: more small call graph and call stack and more things #702

Open
27 of 29 tasks
Domiii opened this issue Mar 17, 2022 · 0 comments
Open
27 of 29 tasks

fix: more small call graph and call stack and more things #702

Domiii opened this issue Mar 17, 2022 · 0 comments
Assignees
Labels
bug Something isn't working call-graph Related to Call Graph rendering

Comments

@Domiii
Copy link
Owner

Domiii commented Mar 17, 2022

TODO

  • revamp async update logic in ACG:
    • Only use setState to send render data to client. Refrain from directly calling client code remotely.
    • E.g. in host/AsyncGraph, there should not be all kinds of this.remote calls.
  • Optimize ACG: in update() use the "delta update" approach
    • → divide node data into three groups added, removed, remaining, and handle them correspondingly
    • We already implement that logic in KeyedComponentSet. Try to re-use that.

Done

Misc

  • fix: _getNestedAncestors is incorrect
    • It reports an infinite loop that does not actually exist: promiseId v4292 at rootId c1373
  • sometimes, when selecting x in await x, it will not let user select x, but always selects await x instead
    • → Seems to be a general issue with the first await of any async function
    • test w/ async/basic1.js → try selecting RHS of first await of main
    • test w/ sequelize#2sequelize.js:613 → try selecting RHS of the await
  • VSCode keeps crashing when selecting certain ACG nodes
    • First set a breakpoint on ACG node selection code, then repro. Be careful. It will crash your VSCode (extension host window)
    • Repro steps
      • open ACG in follow mode
      • select result2 in index.tsx
      • NOTE: this also happens if you take the steps in reverse.
  • subsequent (not first) roots of async functions don't have Root Promise set
    • see TraceDetailsAsyncRoot Promise
    • test w/ await2.js
  • fix: GlobalViewErrors are not sorted by timestamp
  • fix: SCG HoleNode root extension does not work. Sometimes, it would produce multiple sibling HoleNodes.
    • However, only one of them is real. The other ones disappear when refreshing.
    • Test w/ a whole bunch of await sleeps (causing many CGRs)
  • fix: sometimes there is an inf loop in _getNestedAncestors
    • → added visited set to avoid inf loop, in case promises chain back on themselves.

ACS

  • test w/ sequelize#2
    • select the 4th error (actual reported error)
  • The stack only goes full width after also clicking the CG buttons.
    • Afterwards, the CG button is still shown as active
  • make sure that all CGRs are captured accurately
    • executeSql() is displayed as a CGR but it is not a CGR.
    • It's actual CGR shows up after clicking into it.
  • when clicking await (as caller), make sure it jumps to the correct place:
    • → the Await context location of that await (which is located right behind the await)
  • sometimes, ACS collapse/expand buttons don't work
    • is that because those contexts have been moved to a different place? should we just hide the buttons for contexts whose children have been moved then?
    • temporarily hide graph mode buttons in ACS

ACG

  • val button does not work if: (1) first select a trace, (2) then enable val
  • selected node does not stay selected: (1) select trace, (2) toggle detail mode
  • also test all of these in SCG

CG Filtering

  • fix: when unselecting and re-selecting the application, all HoleNodes are gone.
  • fix: defaults seem wrong?
    • in express#1, it shows everything by default
    • it also claims to have an active blacklist.
    • make sure it feels smooth when using it:
      • the buttons should be active iff the filter is active
      • and using the buttons should always work exactly as intended and feel intuitive (if possible 🤣)
    • image

Other

Search

  • when re-selecting application, not everything seems to get updated correctly
  • empty search field should always reset the search. ENTER should not start a search for an empty string.
  • when clicking a button, the dropdown stays open

Data Flow

  • fix: when selecting x in class A { f(x) {} }; new A().f(1);: in DataFlow View, it renders the entire class
    • → should only show the parameter instead
  • fix: array built-in HOF parameter linkage (map, filter, some etc.)
  • test w/ json-parse1.js
    • → this should work in both, Value and Access modes
    • Ideal Solution
      • → add corresponding DataNodes in ValueCollection
      • → re-do the order of calls: call dataNodeCollection.createRefDataNode(value, parentNodeId, propValue, refId) from _serialize
      • → but this might cause a big impact on performance for rarely needed pieces of information
    • → try hackfixing buildDataNodes or getValueId instead
@Domiii Domiii added bug Something isn't working priority call-graph Related to Call Graph rendering labels Mar 17, 2022
@Domiii Domiii changed the title fix ACS fix: more small call graph and call stack things Mar 18, 2022
@Domiii Domiii changed the title fix: more small call graph and call stack things fix: more small call graph and call stack and more things Mar 19, 2022
Domiii added a commit that referenced this issue Mar 19, 2022
This was referenced Mar 21, 2022
@Domiii Domiii added priority and removed priority labels Mar 28, 2022
@Domiii Domiii removed the priority label Apr 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working call-graph Related to Call Graph rendering
Projects
None yet
Development

No branches or pull requests

2 participants