I got regularly my IDE throwing “prSetEdited” errors.
Usually when starting the IDE.
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
ERROR: Message 'prSetEdited' not understood.
RECEIVER:
nil
ARGS:
Integer 1
CALL STACK:
DoesNotUnderstandError:reportError
arg this = <instance of DoesNotUnderstandError>
Nil:handleError
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Object:throw
arg this = <instance of DoesNotUnderstandError>
Object:doesNotUnderstand
arg this = nil
arg selector = 'prSetEdited'
arg args = [*1]
Process:interpretCmdLine
arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'prSetEdited' not understood.
RECEIVER: nil
Today I got another similar one when closing a file:
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
WARNING: Attempted to modify missing Text Mirror for Document {caf6d83d-8600-42a0-b0c3-49b8c508b15b}
ERROR: Message 'closed' not understood.
RECEIVER:
nil
ARGS:
CALL STACK:
DoesNotUnderstandError:reportError
arg this = <instance of DoesNotUnderstandError>
Nil:handleError
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Object:throw
arg this = <instance of DoesNotUnderstandError>
Object:doesNotUnderstand
arg this = nil
arg selector = 'closed'
arg args = [*0]
Process:interpretCmdLine
arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'closed' not understood.
RECEIVER: nil
Any idea what could cause that ?
I don’t observe any wrong behaviour after those errors. But I just wonder if I’m the only one facing this.
I’m using 3.11.2 on Windows10. And it’s a fresh installation. No extensions, no quarks, …
PS: For the error on close I got today, I had my keyboard shortcuts and some of my class files copied to this new installation, in the meantime.
I’ve got the same problem here. Windows 10 and SC 3.11.2 and quite some quarks.
Whenever I save a file in IDE.
ERROR: Message 'prSetEdited' not understood.
RECEIVER:
nil
ARGS:
Integer 1
CALL STACK:
DoesNotUnderstandError:reportError
arg this = <instance of DoesNotUnderstandError>
Nil:handleError
arg this = nil
arg error = <instance of DoesNotUnderstandError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of DoesNotUnderstandError>
Object:throw
arg this = <instance of DoesNotUnderstandError>
Object:doesNotUnderstand
arg this = nil
arg selector = 'prSetEdited'
arg args = [*1]
Process:interpretCmdLine
arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Message 'prSetEdited' not understood.
RECEIVER: nil
On windows 10, my father recently had a problem that blender 3d all of a sudden refused to save files, no matter where on the file system.
After a long search, it turned out windows had enabled some kind of “ransomware protection” (they call it “controlled folder access”) preventing blender from modifying anything on the file system and the only way to get it working again was to explicitly whitelist blender as “not ransomware”.
Maybe something to check?
Open Start.
Search for Windows Security and click the top result to open the app.
Click on Virus & threat protection.
Under the “Ransomware protection” section, click the Manage ransomware protection option.
Select the app executable (for example, chrome.exe) you want to allow through this feature.
Click the Open button.
Once you complete the steps, the app won’t be blocked by the feature, and it’ll be able to make changes to files.
How to enable ransomware protection using Group Policy
To enable Windows 10’s ransomware protection with Group Policy, use these steps:
Open Start.
Search for gpedit and click the top result to open the Local Group Policy Editor.
Browse the following path:Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Microsoft Defender Exploit Guard > Controlled Folder AccessQuick note: If you’re still on Windows 10 version 1909 or earlier, the path is slightly different: Computer Configuration > Administrative Templates > Windows Components > Windows Defender Antivirus > Windows Defender Exploit Guard > Controlled Folder Access
Double-click the Configure Controlled folder access policy on the right side.
Hm, I don’t immediately understand how ransomware protection on the filesystem would affect this issue.
The root of the issue is that every document that is open in the IDE is mirrored in sclang memory. This is so that you can access Document contents, or its dirty status (.isEdited), synchronously in the language.
When you type a character into a document, SC-IDE does two things:
Sends an IPC (interprocess communication) message to sclang telling it that the document has been edited.
Sends an IPC message to sclang telling it to insert the character at a specific location in the sclang doc string.
If it can’t find the sclang document reference, then:
The “edited” status change will try to call prSetEdited on nil = “ERROR: Message ‘prSetEdited’ not understood.”
The mirror update (in SC-IDE code) will fail with “WARNING: Attempted to modify missing Text Mirror for Document (name).”
The catch is that the document references should always be synchronized between IDE and language. (The ScIDE class calls handshake during library init, and this calls this.send(\requestDocumentList);. After this, all open documents in the IDE should be reflected in the language. But clearly this is not always working.)
When I said the reason is unknown, what I meant is: We don’t know why, in Windows (and only in Windows), document references go missing.
Unless the IPC calls are using the filesystem, AFAICS filesystem protection features would be irrelevant. (No harm to try, of course, but I wouldn’t expect any improvement.)
I was kind of triggered by the bug decriptions of the linked bugs “prSetEdited errors … when saving files”. I thought that - if saving gets some weird error - something else might go wrong later as well. Also user aiode explicitly mentioned saving files. But I agree it’s a long shot in the dark