0
Unity Bug

Editor instability with OpenGL or Metal

Oliver 3 years ago updated by Lazlo Bonin (Lead Developer) 3 years ago 22 1 duplicate

Hey all,

I've noticed that OpenGLCore has caused me some trouble with Bolt. For my projects purposes I need to be running OpenGLCore in editor, sadly I've found bolt is incredibly crashy in editor when Graphics API OpenGLCore is active. I encourage anyone reading this to give it a shot and try it. I would love more data points. I can't even create a flow to simply rotate a cube before it crashes. The issues are 100% reproducible when they occur as well, no randomness, so I suspect an underlying UI library going haywire. The crashes are so numerous and across the board that listing any one of them is kind of pointless. As a software engineer I have concluded that this problem is likely based on the various editor UI API layers, not any specific issue with Bolt's logic. My recommendation for starting working on this bug would be to toss the editor into Graphics API OpenGLCore and try to do anything really.


Hopefully this is an issue that is possible to resolve. If I have simply missed the memo on what Graphics APIs are supported, let me know I'll shh.

All the best,

Oliver

Bolt Version:
Unity Version:
Platform(s):
Scripting Backend:
.NET Version (API Compatibility Level):

Duplicates 1

+1
Pending Review

Hi Oliver, welcome to the community!

I must admit I don’t even understand what you’re referring to; is there a way to change the graphics API used to run editor GUI methods?

Bolt only uses EditorGUI and EditorGUILayout calls, nothing custom, so unless the crashes or exceptions occur at the Bolt layer, I don’t think I can do anything about internal editor instability...

Let me know if I understood correctly; I certainly want to make sure Bolt remains usable on your development configuration. 

Hey there,

I just want to first say, amazing product and that this is in no way meant to be a negative reflection on Bolt's design. I appreciate all that you guys have done and are doing. I understand the sheer enormity/complexity of building an interpretive graph based scripting tool that isn't awful! 

As for testing out the issue and seeing what I mean, give this a shot: 


The above configuration of rendering APIs (See OpenGLCore at the top as default rendering API) has given me considerable trouble with stability with Bolt. If I simply switch the Direct3D11 to the primary render API it resolves all issues. 

I want Bolt to be as solid across as many platforms/graphics APIs as possible, so I am just alerting you to the issue!

As an additional note, I am guessing there maybe certain GUI functions that are more universally stable across APIs, it might be worth querying Unity about this issue.

Using defines you can work around the specific issues with the different rendering APIs: #if OPEN_GL_CORE etc, so I imagine there might be some viable work around eventually.

All the best,

Oliver

I guess this is decidedly unimportant? Good to know.

Hi Oliver!

Sorry for the late reply, this is definitely not unimportant, I just had emergencies on another contract last week so I couldn't focus on Bolt as much as usual.

I must admit I don't know where to find the settings you screenshotted in Unity 2017.1. I couldn't find them in Player, Graphics, Quality, Editor or Preferences. 

Most importantly, under the hood, Bolt only uses EditorGUI and EditorGUILayout calls, without any additional raw access to rendering. In other words, I don't see how Bolt's stability could depend on the rendering engine, unless it is actually Unity's (in)stability that depends on it. You mention "there maybe certain GUI functions that are more universally stable across APIs", but I haven't been able to find any documentation on that matter; could you provide me with a link?

Also, in the mean time, is there a reason why you cannot switch to DX rendering for the editor?

Hey there, 

The settings are accessible Edit > Project Settings > Player > Other Settings > Uncheck Auto Graphics API for Windows > Drag OpenGLCore above DX11

I don't have a direct source for stability links, I am just conjecturing a logical reason for it to be unstable on different rendering APIs. For all I know it might just be one specific order of calls that Bolt does etc. I don't have a knowledge of the internal structure of Bolt otherwise I'd take the time to attach a debugger and step through it myself. 

I can use DX for the moment, but this project will soon require me to work primarily in the OpenGLCore API.

Thanks for your time and effort!

All the best,

Oliver



Confirmed

Ah, I see! I tried it and got an instant editor crash. 

However, I don't know how to attach a debugger for these on a multi-DLL project. More often than not, editor crashes means the error occurred outside of the managed code altogether. Also, the Unity documentation on editor troubleshooting is very scarce, and in fact pretty much only suggests you re-install Unity or contact support: https://docs.unity3d.com/Manual/TroubleShootingEditor.html

At present time, I can only suggest you submit the bug reports with the Unity error reporter when the crash occurs, to give them the chance to look into it. As I said, Bolt only uses editor functions which are documented to be reliable, and I cannot start a reverse engineering hunt to find where anything could fail in Unity's immense cross-platform editor GUI library. Even if I did decompile the managed DLLs for it, I have no access to the native rendering code.

Hmm, ok makes sense. I appreciate you trying! I guess Unity is the next stop in terms of debugging. I was just thinking maybe you knew that one spot in Bolts editor that could cause some unusual reaction. I know how it goes, haha. I'll see what I can do with Unity. 

I know editors like Amplify shader editor/Surforge/Shaderforge have managed to make it stable for both, so there must be a way. Hmmmm.

Pending Review

Hi Peng,

Sorry you're having this issue. Are you sure it is related to Bolt? Do you get an error log?

hi Lazlo,

Every time after I import bolt into unity, the system becomes super slow. And then the above mentioned crash will happen.

Do you get any error log? What is slow, the editor or the play mode?

Where can I get an error log? What I did was the follwong.

1. Open unity

2. Create a new 3d project

3. Import bolt from within unity

4. Go through the setup process after the import

5. Create a 3d cube

6. Switch to game view ( this is when it becomes slow)

7. Switch back to scene view.

8. At this point two things might happen. Unity either close by itself or my whole system restarts itself.


Just to update, it runs perfect if i create a 2d game in unity. It only crashes when i create a 3d game. Does it relate to my graphic card setting? Mentioned in the post below:

https://support.ludiq.io/forums/5-bolt/topics/590-general-instability-when-running-unity-with-graphics-api-openglcore/

What rendering API and OS are you using?

not sure about how to get to check the rendering api. but this is my mac book pro config

is it this one?

Yes, what happens if you uncheck Auto Graphics API for Mac? What options get listed below?


This is what i see

any news to this bug?

Unity Bug

I will investigate this further.

At the moment, I highly recommend you submit the bug report to Unity using the crash error reporter. It seems to be a crash related to their graphics API implementation, not Bolt's use of it.

Also try updating your graphics drivers or operating system to the latest version.

On my end, I will try figuring exact reproduction conditions and submitting reports with a bare-bones project.  

So far, researching other reports of this issue is not encouraging:

Still stumbling in the dark with this, with no apparent way of finding the cause.

I've created a post on the Unity forums, hopefully a Unity developer can give me some insight!