windows defender issues? & other AV issues?

Richard Gaskin ambassador at fourthworld.com
Tue Jan 8 06:38:00 CET 2019


Curry Kenworthy wrote:

 > Richard:
...
 >> How many devs among us are shipping apps which rely on
 >> frequent disk saves?
 >
 > Not the devs that heed my usual advice and KISS philosophy. :)
 >
 > But any system-intensive action performed too often or at the wrong
 > time during typing, animation, or other activities where lag is
 > obvious can be an issue on any platform - Mac, Windows, mobile, even
 > web, even using any language - not just LC.
 >
 > Bad coding habits or insufficient caution is just bad, fullstop,
 > regardless of the context. Good habits and caution are critical, no
 > matter whether someone is a post-HC hobbyist or a degreed comp sci
 > engineer. That's why I'm always harping like a broken record about
 > good habits. :D

Everyone on the LC dev team is either a CS or advanced mathematics 
graduate.  I'm not losing sleep over the prospect that they haven't at 
least thumbed though Knuth.

The Script Editor is in competent hands, and with community involvement 
it only get better.

I'm more interested in those of us who do not hold a doctorate in CS, or 
even when we do what should be considered the "right" thing and still 
find performance impaired.

I haven't finished reading the specs at sqlite.org, but I skimmed enough 
this evening to get the impression that there's a fair bit of 
housekeeping needed to satisfy what we consider read-only operations 
like queries. Some of that housekeeping needs persistence, particularly 
with materializations for pre-evaluation of subqueries, among others.

So using the world's most popular No-One-Ever-Got-Fired-For-Choosing-It 
local storage solution may still not make one immune to the effects of 
this unusual performance hit from Windows Defender.

I haven't benchmarked that specifically, though it would be a good test 
if someone here has time.

But even with flat files, we write data when we need persistence. I 
doubt many stay up late adding routines that write to disk 
unnecessarily. Sometimes it's to flush cache.  Sometimes it's state data 
useful for session restoration.  Sometimes it's the user's document.

And with modern conventions trending toward auto-saving vs the older 
explicit user-driven saves, some of the most well-written apps write to 
disk more frequently than ever before.

I'm less interested in casting judgment on code I haven't read written 
by other people than just making the code I'm responsible for writing 
perform well.

To summarize what we've learned so far:

- Apps write to disk for many legitimate reasons

- Defender's RTP impairs performance of writes

- Even "read" operations on the world's most common local
   storage format, SQLite, and others, may be affected.

The latter merits testing. And given what we know of the SE, seriously so.

It may be that Prefs plays a key role in timed tasks, but I can't 
imagine if it does that it was the result of an LC team member out of 
things to do.  We write when we need persistence, so I suspect they 
would do no less.

But here's an interesting thing - boot your Linux box and run this:

  strace ./livecodeindy.x86_64 &> strace-log.txt

It's super-annoying to try to scroll though, and no, I haven't read 
every line (I'll leave that for more diligent souls like Mark Wieder, 
who will probably run that when he reads this <g>).

At a quick skim I see evidence of a lot of timers (which we would expect 
given the SE's features), but an interesting thing about file access is 
a lot of lstat and open calls apparently looking for, and not finding, 
the App Overview stack file:

lstat("/home/rg/.runrev/components/livecodeindy-9.0.2.x86_64/revapplicationoverview.rev", 
0x7ffc8d185800) = -1 ENOENT (No such file or directory)
open("/home/rg/.runrev/components/livecodeindy-9.0.2.x86_64/revapplicationoverview.rev", 
O_RDONLY) = -1 ENOENT (No such file or directory)

That much seems a bug, and I'll add notes to about that to the bug 
report. Since it isn't finding the file it can't write to it, and 
without writes I doubt it's the thing people are seeing when they turn 
RTP on and off.  But worth looking into for the sake of tidiness.


Oddly, in my quick skim of the log file I haven't yet seen calls to the 
various SQLite files the IDE uses or the Prefs file, and alas I'm out of 
time on this for tonight...


 > Thanks for your test, very nice. My regards.

Happy to one of the many people in this process.

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com



More information about the use-livecode mailing list