« first day (1656 days earlier)      last day (1524 days later) » 

4:13 PM
> The memory consumption of rubberduck is far to high for me.

Im my case - a 100 mb access-mdb with >100 Forms - MS-access uses ~110 MB RAM (open VBE but no rubberduck refresh)

After clicking "Refresh" in the code explorer, the Memory consumption grows and grows and grows and stops at ~ 680 MB.

This is far to much in my case because when I start working with my program, I get OutOfMemory-Errors soon.

Even worse: Features like e.g. intender or some renames tends to open a lot of fo
> 32-bit host?
 
@Duga intender? ;-)
 
if you go "indent project", it's going to open every code pane it needs to indent
 
yeah.
 
That's basically a dup of like 3 issues.
 
I wonder if that would be faster using exports/imports.
^^
 
4:21 PM
I think Gener4tor opened 2 of them.
 
yes he did
 
> Version 2.3.0.4221
OS: Microsoft Windows NT 10.0.16299.0, x64
Host Product: Microsoft Office 2016 x86
Host Version: 16.0.4711.1000
Host Executable: MSACCESS.EXE
 
yup, 32-bit
 
and I'm pretty sure we closed them before, linking to the other issue.
 
@this Wouldn't that lose undo support?
 
4:22 PM
but.... what is the difference?
 
> 32-bit host?

We could (should) probably close whatever module we open to perform any given task - but I don't think we can modify a module without opening it. Indenting at narrower scope than the entire current project should help reducing the number of modules that need to be opened.
 
you only have only 20 slots in the undo stack.
if you have more than that, you're doomed anyway.
 
10, given half of them are the rewriter clearing the module contents
 
And that's per VBE instance, or per code pane?
 
per VBE instance
VBE doesn't keep a per-pane stack
 
4:24 PM
IMO, Indent Project should be considered irreversible.
 
I suppose we could keep our own stack, at the cost of some minor memory consumption...
^ self defeating.
 
and IMO a project with 100 forms in a 32-bit host should be considered a liability
 
640 KB should be enough for anyone.
 
4:25 PM
@MathieuGuindon uh, sorry but that has been working for several years.
I've seen Access with even 500 forms. O_O
 
A project with 100 forms should be considered a liability with any bitness.
 
@this o_O
 
@this meh, just patch the runtime
 
The point being, is that memory issue has been unnecessarily exacerbated with new versions of Office.
 
4:26 PM
I'd probably consider making all the forms dynamic / runtime-generated around the time the 10th form is made
 
IKR?
If you can't see them all in the explorer at the same time...
 
Oh definitely. There's a big code smell right there.
But if it's "working" and they can't use RD to clean it up....
 
TooManyFingFormsInspection
 
That is a problem.
 
How hard would it be to optionally cap RD's memory usage?
I also think we should explicitly set the GC pressure on startup to account for the host.
 
4:32 PM
can we even?
I still think we have to first confirm what is really going on in that mysterious blob chunk of unmanaged memory.
 
Right, but if the GC thinks it has the entire process space, it's really mistaken.
 
AIUI, the pressure is on a per-object basis
probably need to allocate some value for the SCW wrappers. But I don't know how we'd tell it about the host's consumption which can change dramatically.
e.g. load PowerPivot add-in in Excel => OMG!
 
This reads like it's assembly-wide: docs.microsoft.com/en-us/dotnet/api/…
I.e., we call GC.AddMemoryPressure at startup, tell it that the host is using, say 1GB or so (configurable?) and let it do its thing.
 
hmm i see.
I see why I was thinking per-object since the doc was suggesting using a dispose pattern
 
Which makes sense, but we just attach it to our application object.
The dispose pattern is to release the memory pressure with the resource. We shouldn't really care about that.
 
4:38 PM
Operation Yank Wisdom Teeth in T-minus 2hour 30 mins. Wish me luck pond.
 
'luck.
 
Iven, are you sure? You need all wisdom you have.
 
If you thought I was slow before, watch out.
 
(seriously, it'll be worth it)
<= minus 4 wisdom teeth
 
They aren't painful or impacted at all. Just excessively far back, according to dentist.
 
4:41 PM
@IvenBach you'll do fine :)
 
@IvenBach g'luck. and maybe they will give you candy. err meds.
 
Hey, my car is broken. Well, it works. But sometimes it doesn't. I can't show you the car. Can you diagnose? Do you see the problem with your question?urdearboy 2 mins ago
3
#golden
aaand gone
 
dang it, I missed it
 
4:58 PM
@Comintern just another idea - would it make sense to use GC notifications and adjust the memory pressure ?
that way we can tell it the actual working set amount of host's memory at that instant.
 
the 'References' CE node could probably mention the project it's for, in the bottom panel; currently just says 'References'
 
@this Maybe - the problem is that would only cover the managed side of the equation.
We're guests in somebody else's memory space.
@MathieuGuindon That's in the CE PR coming this evening.
 
@IvenBach My dentist said the same, but I declined the operation.
 
@Comintern not sure I follow. We add/remove pressure based on the host's memory used via WMI (or whatever) in order to give GC a better picture of how much memory is in use by the process.
 
Oh, now I follow.
So make it dynamic instead of a hard carve-out.
 
5:06 PM
yeah
that would help accommodate for scenarios like Excel with PowerPivot
or other like that.
 
Right. I wonder how responsive that would be to memory space changes. I've never monitored memory in my own process space before.
 
yeah, I was thinking of keeping a coarse granularity. 25 MB chunk, always rounding up for instance.
 
25 MB chunks are probably even a bit fine.
 
#NeedExperimenting
 
5:09 PM
besides i'm not sure if adding memory pressure will necessarily prevent OOM.
It may only mean more eager GC, which may do nothing to alleviate of the black blob of unmanaged memory
 
More eager GC can't hurt if it's getting close though.
And it would also allow for selectively disabling functionality based on memory pressure.
 
wow GH's filtering for the issue sucks.
 
> We acknowledge that this is a big issue and agree something needs to be done about it. However, it is not easy to fix and frankly, we need help with it. That's why we still have the issue #3347 open. Note that it has a number of linked issues. I will close this as a duplicate of that issue. Even so, we do welcome any assistance, especially on identifying what is really inside the large blob of unmanaged memory in order to resolve it.
 
no point in having several issues about same thing, IMO.
 
5:22 PM
^^
 
Wondering if the following scenario is experienced by anyone else: 1. Add Class_Initialize to a class (no content in the body) module. 2. Save the module. 3. Click "Ready" button to re-parse. The Class_Initialize Sub is removed during parsing. Note: If I put some content within the Class_Initialize body, then it is retained.
 
I don't think that's RD's thing
that's VBE's thing
I see it all the time and not just for that Class_Initialize but with an empty event handler, too.
 
If I save and close without reparsing...the Sub remains.
when I re-open
 
try compiling it.
and you'll see that effect.
nothing to do w/ the saving.
 
yup - OK thanks.
 
5:27 PM
@Comintern / @MathieuGuindon I'm thinking of opening a SO question for suggestions on how to analyze the unmanaged memory; I've already looked at few memory analyzer but they fell short in giving any meaningful data. thoughts?
 
I'd support that.
It's quite possible that we're leaking a crap-load of memory via WPF.
 
yeah, i'll tag WPF just in case as well as COM.
oh hey, did we fix that leak in converter?
 
I should run it under a profiler.
@this Which one was that?
 
wait aminute, WPF leaks?
and I thought it was managed
 
One of the reasons I have a distaste for data binding.
 
5:33 PM
@Comintern having trouble finding that... I thought Hosch250 found a memory leak with one of WPF converter for bitmap
e.g. not disposing the stream or something like that
 
Throwing converters around, attachable behavior objects, all the other stuff that's required for non-vanilla control binding.
The big one is ending up with WPF objects that hold references to what should be short term view objects.
 
I'm sorry, can you explain to me once again exactly why is WPF awesome?
 
Because it makes ridiculously hard things easy and easy things ridiculously hard?
 
yeah I saw that remark somewhere else.
given that the easy things are the 90% of the time.... #NotSold
 
5:38 PM
TBH, once you start using attached behaviors and converters, you end up with WinForms code that's been chopped up and abstracted about 6 times.
 
blah, I can't find that chat snippet about the leaking converter (if it's even a converter)
 
WinForms renders off user32.dll, which has code from user.dll, which first shipped in Win 3.x
 
I was fixing leaks as I ran across them.
 
WPF renders off DX
 
Right, but the code looks the same.
 
5:39 PM
yeah, I just wanted to be sure that was fixed but darned if I can remember where that was....
 
also, hierarchical bindings in WPF, vs pain-o-matic treeview control in WinForms
 
@MathieuGuindon it can render off unicorn farts for all I care. I just want it to stay out of my way and let me write logic without getting tangled up in all its intricate plumbing details.
3
</crankyoldman>
 
make me a unicorn-shaped button in WinForms
 
TreeView has it's share of pain-o-matic in WPF too. Getting the AssociatedObject from its view in a behavior is ridiculous.
 
but then you get to make a control template for every node if you want, wheras in WinForms you get a label and an icon
 
5:43 PM
@MathieuGuindon Easy. Hook the repaint event, grab a GC, and draw anything you want.
 
IOW step out of the framework, do what you want ...with tech from 30 years ago
 
age has nothing to do with it. If it makes easy thing hard, it's doing it wrong.
 
Subclassing a control and manually painting it isn't really different from writing an xaml control - it's just the level of abstraction and how you chose to have it rendered.
 
</okstoprantingalreadyoldman>
@Comintern GTK to know that we can use the dotMemory to diagnose. I know that Max and I ran that before but I wasn't really paying attention to the WPF back then.
 
I'll play with it tonight. I'm especially curious about what's going on in the inspection results LV.
@MatthewHagemann Can you edit your question to include the WER report that you're looking for then? — Comintern 8 secs ago
WTF? I swear I'm going to throw my VTC onto that pile.
 
5:54 PM
DVd
> You voted to close this question Dec 13 at 17:16
 
It's going to go like this. OP is going to edit in the WER. I'm going to look at it, then edit my answer to be "yeah, from the report it looks like you killed it from your process".
 
$2 the crash is caused by a bug in the C# code
 
If OP is lucky, I'll add a demo program in c# to do the same thing, and end with: Go look for something like this in your sh!tty code.
 
OP is tackling that bug from the wrong end
 
5:59 PM
attach a debugger, reproduce user steps, watch VS tell you about an unhandled exception, hit F5, watch the APPCRASH get written.
 
I assume that he does not even know how.
 
or rather, attach a debugger, reproduce user steps, watch VS tell you about an unhandled exception, go "oh crap, it's a NRE", hit stop, fix the bug, redeploy, done.
 
Also, if you need to "figure out a way for my program to handle an Excel crash", just wrap your COM calls in a freak'n try-catch and watch for a host disconnect error.
 
(else, he wouldn't be asking the question... right?)
 
Probably true. I'll work under the assumption that OP's application isn't a rocket science extension.
 
6:07 PM
if it is, OP is in the wrong field
 
or a noob.
I can see how he'd have hacked together a template extension put in his code and "it works!!"
 
we still don't know whether the C# code is running in-process or not
I think it could be some WinForms app creating an invisible Excel instance and crashing it
 
Probably using it as a back-end database.
 
if it's a C# front-end with Excel database.....
ain't enough Picards for it.
 
the whole crew of several thousand in a group picture all face palming...
 
6:17 PM
Huh, this is interesting. the 64-bit version of that crash code doesn't take Excel down.
Unless the RD subclass is "protecting" it.
 
6:45 PM
@MatthewHagemann OK, silly question. I checked my event log and found the application error events triggered by this code: "Faulting application name: EXCEL.EXE, version: 15.0.5093.1000, time stamp: 0x5bed2d14 Faulting module name: VBE7.DLL, version: 7.1.10.68, time stamp: 0x58def2a6". Is it possible that you just don't have WER configured to log them? — Comintern 9 secs ago
Listening for the sound of the deafening facepalm...
 
[rubberduck-vba/Rubberduck] build for commit 16d9f9b2 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
@Duga ...and that deafening facepalm is mine.
3
 
the timing was perfect...
 
@Duga rather interesting that it's apparently only shadowed declarations tests failing
 
6:55 PM
So, now that I'm about to write my articles for my app, I need to decide how to structure it.
I think I'll structure it as a 10-week course, kind of like a masters-level course.
 
intro-body-conclusion works pretty nicely usually
oh
 
@MathieuGuindon I mean, structure the whole course.
 
I think I'll do 1. setup (install VS, run console apps--I need VS installed for my fiddle anyway).
2. Basic console input/output.
3. Control flow: if/while/for/foreach/do while.
4. Debugging.
5. Unit tests.
6. Advanced IO and more complex control flow (recursion) tentatively.
 
anyone else getting malformed class when using predeclared class template?
 
6:58 PM
And that should be enough.
 
@MathieuGuindon They were adding project references without a filepath, which was throwing in the COMReferenceSynchronizer. The tests were set up in configuration that is impossible to do in a live environment, but adding a filename broke the tests. I think I'm missing a commit in there for creating the mock environment "correctly".
 
The only reason I put unit tests so low is because you kind of need to know basic programming before you can write a test.
 
@this works fine here
you edited your template? :)
@Hosch250 0. git basics
 
I worked it out - somehow it got LF ending instead of CRLF endings.
 
Hmm, an appendix?
 
7:03 PM
which is unexpected. I hadn't edited that template.
 
@Hosch250 adult tooth that never came in is part of the reason I’m doing it. Plus I’m a glutton for punishment. Self evident by returning to this pond :p
 
@IvenBach Ah.
 
Might only be doing 2 today.
I’ll only be a half-wit.
 
Ouch.
@skiwi had this done recently.
Got good insurance?
 
We live in ‘Murica. Nope.
 
7:07 PM
@IvenBach they normally do that in 2 appointments... unless you want to eat with a straw for 2 weeks
 
Even if you have “good” insurance they’ll still ream you in the end.
 
But... But... Socialist California?
:P
 
@MathieuGuindon if rather be done in one go. I got Christmas break to recover.
I’m fine eating avocado samiches for my recovery. Along with bananas.
 
Banana slices between avocado slices?
 
Couple that with the fact there’s opioids on every corner I’ll be A’ok
 
7:09 PM
lol?
 
Strawberry smoothies for desert?
 
Weird. I don't remember going in for more than one extraction.
 
actually the last thing you'll want is to use a straw for anything whatsoever for a week or two
 
Of course, I was eating tomato soups for few days and out of it.
 
Suction has likelihood of removing the blood clot.
 
7:11 PM
 
exactly
@Duga 7 stars ahead!
 
@this attributed to drugs.
 
Drugs improve my humor factor By a non negative number greater than 0
 
oh yeah, i was half-consicious
 
7:13 PM
The proof!
 
remember being full awake but feh. not really there.
 
I don’t mind it. Last time I had a tooth extracted they only numbed me up. Felt the roof being ripped out. Interesting noise and sensation in your skull.
 
did they plug you into the funny gas for that one? I think some are done with just shots, without needing the funny gas.
 
No gas.
For a bone graft I was gassed. Waking up dry heaving was one of my least —-memorable—- enjoyable experiences.
 
yeah
 
7:30 PM
> I've been looking at other scripts but can't figure out which lines of code I have to personalize myself.
"Personalize"?
Is that some weird euphemism for "code"?
 
think so. likely non-English speaker
 
@Hosch250 Correct, and I'm still alive
 
7:54 PM
3 out of 4 ain’t bad. Last one left, for now, ensures I’m not a complete moron.
 
@IvenBach "it ain't bad", says the guy with the mouth frozen up to the ears ;-)
 
(at least, I hope you're solidly frozen for this)
 
8:36 PM
@this It is the inspection results view where I found the potential memory leak.
 
Yeah, but I could not find the code snippet in the chat history
I wanted to check if it was fixed in the next already
 
@MathieuGuindon not yet it ain’t bad. Ask me in 3-4 hours.
 
I do not think anybody touched the inspection results view.
Anyway, I think we should load the five or so bitmaps into a resource dictionary once and then reference them instead of loading them via the converter from file each time.
 
it would be good to compare the before & after to see if it had a observable effect on the memory leak.
 
hmm, and bitmaps are disposables and involve unmanaged memory... could this be our "big blob of unknown memory"?
 
8:40 PM
I don't know if you saw, but Comintern linked to an blog that shows how to debug WPF memory leak
@MathieuGuindon yes that would be a likely suspect at this point.
 
atomic-facepalm: armed & ready
 
Frankly, I think that if it turned out to be just simple as that, we're going to ^^^
 
ugh... it seems like at least one of my RAM bars is faulty...
can't use more than 6 of the installed 8 GB without something going haywire
 
and that's why you shouldn't buy Dodge. ;-)
 
8:42 PM
~badumm, tss
 
they're in Germany. they have VW, BMW, Audi ....who needs a Dodge?
 
for dodgy operations?
 
apropos dodgy operations: do we have an open issue for the NRE in AssignmentNotUsedInspection?
I'm kinda out of it
 
not sure if that's what you're looking for
 
aight.
thanks
 
8:49 PM
@this that's a PR :)
 
> Taken from the Logs presented in #4645, apparently there's a NRE in the AssignmentNotUsedInspection:

```
2018-12-17 15:02:39.0728;WARN-2.3.1.4327;Rubberduck.Inspections.Rubberduck.Inspections.Inspector;System.NullReferenceException: Object reference not set to an instance of an object.
at Rubberduck.Inspections.CodePathAnalysis.Walker.GenerateTree(IParseTree tree, Declaration declaration) in C:\projects\rubberduck\Rubberduck.CodeAnalysis\CodePathAnalysis\Walker.cs:line 72
at Rubber
[rubberduck-vba/Rubberduck] Vogel612 created project card
[rubberduck-vba/Rubberduck] Vogel612 did something with some project card
> Version 2.3.1.4330
OS: Microsoft Windows NT 10.0.15063.0, x64
Host Product: Microsoft Office 2016 x64
Host Version: 16.0.4711.1000
Host Executable: MSACCESS.EXE

Expand the `References` section of the _Code Explorer_
Select _any_ of the referenced libraries.
Click `Find All References...` at the bottom of the _CE_
Boom:
![2018-12-18 15_51_00-microsoft visual basic for applications - roireport - reportdefinitioncodebehin](https://user-images.githubusercontent.com/11889733/50182323-096
 
@MathieuGuindon yeah i know - that was the only one that mentioned NRE w/ that inspection.
 
[rubberduck-vba/Rubberduck] Vogel612 is checking what fun stuff @Duga can say about project cards
 
Pretty sure I touched that stuff for the worksheet inspections. I can take a look at it.
 
it might be within the execution graph generation, but it manifests in the AssignmentNotUsedInspection ...
 
8:58 PM
I also found an issue in the unused case inspection last night that I need to open an issue for.
 

« first day (1656 days earlier)      last day (1524 days later) »