-
Notifications
You must be signed in to change notification settings - Fork 11
Replies: 6 comments · 37 replies
-
Thanks for this .. interestingly, all three crash locations are the same, based on a call to Quite how this actually happens, is not clear! The code all seems fine, there are allocation/deallocation checks everywhere and this is running on the main thread with the GC happening there too, so it seems odd that we have this invalid pointer somehow. In the first crash report, this thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
Customers tell me that it almost always happens when saving the project they are working on. However, it doesn’t occur 100% of the time. It seems quite random. In version 51.1.3.6, it appears to be more frequent. I have tried to reproduce it in many ways, but there's no way to do so. replace is used in many places (450 times throughout our code). Is there any way we can narrow it down and send it to some customers for testing? |
Beta Was this translation helpful? Give feedback.
All reactions
-
Okay interesting -> so yes, I think we'll need to create a custom build for this and ask you to send it out for testing. If you're using 51.1.3.6 currently, that makes it a little easier.. I'll try to get you a macOS runtime with specific diagnostics added around this area, hopefully by the end of the week. thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
Any news? |
Beta Was this translation helpful? Give feedback.
All reactions
-
We got the release 51.1.3.7 out, it needed a few updates to get the diagnostics stuff working on macOS. But now that this is in, we are adding some extra logging around this |
Beta Was this translation helpful? Give feedback.
All reactions
-
@aW4KeNiNG please see if you can get someone to reproduce it using this, and let us know if we can get the generated file that should be left in the app-storage folder when it crashes. (Note, you may want to check for personal/private data in that file, I don't know what you're looking at/replacing! - if you do 'reply' in the message link, it should allow you to send an attachment privately back to me..) thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
The user got a crash when he tried to create a simple project. But he doesn't see the __replace.txt file in the local store folder. Crash report:
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Another report from a new user...
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Oh :-( sorry:
means that it's built using the binary in "air-captive" - the above uuid being the normal 51.1.3.7 release, because I only gave you the variant that goes into "air"... Could you please unzip the below file into the air-captive folder and re-build? Apologies for that.. |
Beta Was this translation helpful? Give feedback.
All reactions
-
No problem. I have downloaded the file and use it in the air-captive folder. But I can't open the bundle application. I'm using the Flex variant, for your information.
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Something very strange there! I'd been building these locally though, and there's a possibility I might have built it whilst "greedy" garbage collection was set on, which would make things really really slow.. Attached is a build which seems to work okay for me here when I link the framework within your app to this one.. thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
A new report. The __replace.txt didn't exist.
|
Beta Was this translation helpful? Give feedback.
All reactions
-
This one looks like the same sort of thing but within the String "append" method. But again it's trying to free a partition and seems to have a very incorrect value which looks like ascii text: Definitely seems to be a buffer overrun so we'll see if there's a better way we can spot this. Logically speaking, this sort of thing should happen when a buffer is expanding: in the "replace" method, it was where a string buffer was being built up because of the different matches/unmatched parts of the original string. For "append" of course, there's a similar thing going to be happening. Curious though as you'd have thought this would be a pretty common crash if there's a fundamental problem with these kinds of functions! So the other thing I had wondered about is the file stream usage and whether there's some change in the string happening there .. are you reading these files in fragments i.e. checking the progress events and picking up part of the file each time via something like thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
When a project is being saved, which is when I've seen it fail for most people, there's no interaction with files. It's simply a dump of the entire project into a JSON format, where parts are divided into chunks to avoid blocking the interface, there are "replaces" of the final String, etc... |
Beta Was this translation helpful? Give feedback.
All reactions
-
I've been checking this again - string appending and all the buffer copying and manipulation there looks to be okay. There haven't been any changes in this area or the JSON stuff for ages. The only thing I wondered about with 50 to 51 is whether the use of 'float' may impact some of the generation of JSON data so we can check that. At this point though, I would also think we may be able to detect the problem, because the error seems to always happen when trying to zero-out a partition of memory prior to freeing it. If we can detect the buffer overrun and then avoid freeing the memory (i.e. marking it as orphaned) then it may avoid the instability. Although I would still prefer to find and fix the underlying problem! Just wondering about reproduction though - if it's always the same folk who are able to reproduce this sort of behaviour, do you think it could be related to the actual contents of their project file? I'm wondering whether it's feasible to set up some kind of automated test that just programmatically opens, amends, and closes a project, then set that going to see whether we hit a reproduction after 10-100-whatever cycles..? thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
I have several users with the problem, and I have even more reporting random crashes. The user who I am kindly passing these changes to for testing says it's random. Sometimes he can save the project, and sometimes he can't. And he has several projects with the same problem. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I sent a modified version to the tester yesterday, and so far he hasn't found any errors for now. The only change was removing some static RegExps that were being reused and creating them when they are needed. I think the part of the code I showed you might be what's causing the crash. |
Beta Was this translation helpful? Give feedback.
All reactions
-
In one of the __replace.txt I was able to verify that near where it crashed, this function is used. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Yesterday we released an update with the code changes, knowing that at least 5 users had tested it before and everything seemed ok. But today we received a report from a new user with the same random problem when saving a project. We are waiting for him to send us the Mac crash report the next time it happens. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Here a new report using the latest changes I made to the code:
|
Beta Was this translation helpful? Give feedback.
All reactions
-
That last one may well be a random other crash; the thread involved isn't something that shows AIR in the call stack, and it's an invalid instruction which is a different cause (and it's running in Rosetta2 ..?). Although of course it's perhaps possible it's the same underlying root cause, which I think is something that may not be solved by your adjustment of the code - I think there's still a buffer overrun. We're looking to see how we may be able to detect this happening .. but it shouldn't happen at all in the first place..! You had mentioned previously that it was working in 50.2, are you able to verify whether that's still the same situation (i.e. would you be able to ship a version using the final 50.2 build to see whether that improves matters)? I'm half wondering if we can track down the changes that introduced the problem - although tbh there may be so many going into 51.0 that it would be a challenge - but it would also be good to know for sure whether the instability didn't exist previously. thanks |
Beta Was this translation helpful? Give feedback.
All reactions
-
Ok, I'll try. The previous version was 50.2.3.1. |
Beta Was this translation helpful? Give feedback.
-
Hi.
Some users are getting random crashes using the MacOS version. I can't replicate on our system. It is happening in the latest version 51.1.3.6. I have built a custom version using the v51.1.2.3 for a customer, and it seems to be more stable, but there are crashes too. It was working on 50.x version.
I include 2 logs using 51.1.3.6 from different users, and 1 using the 51.1.2.3
Crash 1
Crash 2
Crash 3
Using the 51.1.2.3 version:
Beta Was this translation helpful? Give feedback.
All reactions