omegaui / omegaide

An Instant IDE from the Future that supports any programming language.
https://omegaui.github.io/omegaide/
GNU General Public License v3.0
78 stars 11 forks source link

High CPU usage and Terminal not launching on FreeBSD #22

Closed MR-TLL closed 2 years ago

MR-TLL commented 2 years ago

Describe the bug OmegaIDe continuously uses 50-75% of cpu, even when it's idle. For a editor claiming to be lightweight this is abit unexpected.

To Reproduce Steps to reproduce the behavior:

  1. Use FreeBSD as OS.
  2. Use OmegaIDE
  3. Observe CPU usage in htop or system monitor

Expected behavior Low cpu usage.

Screenshots Self Explanatory.

Desktop (please complete the following information):

Additional context There are other problems with the UI, but that is a separate issue. Also i am using OpenJDK 17 Java --version --> openjdk 17.0.2 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-1) OpenJDK 64-Bit Server VM (build 17.0.2+8-1, mixed mode, sharing)

It also throws these errors when run from terminal :-- aunching Omega IDE ... .projectInfo does n't exists. Attempting to create a new file. Successfully Created the new file .args does n't exists. Attempting to create a new file. Successfully Created the new file Mar 25, 2022 9:38:54 PM com.pty4j.util.ExtractedNative doInit INFO: Extracted pty4j native in 6 ms Unable to find full path for "/bin/bash" java.io.IOException: Exec_tty error:Unknown reason at com.pty4j.unix.UnixPtyProcess.execInPty(UnixPtyProcess.java:222) at com.pty4j.unix.UnixPtyProcess.(UnixPtyProcess.java:62) at com.pty4j.PtyProcessBuilder.start(PtyProcessBuilder.java:147) at omega.ui.component.jediterm.JetTerminal.getConnector(JetTerminal.java:129) at omega.ui.component.jediterm.JetTerminal.init(JetTerminal.java:93) at omega.ui.component.jediterm.JetTerminal.(JetTerminal.java:63) at omega.ui.component.TerminalComp.showJetTerminal(TerminalComp.java:46) at omegaui.component.TextComp$1.mouseClicked(TextComp.java:165) at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6629) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4584) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Mar 25, 2022 9:38:54 PM com.jediterm.terminal.ui.JediTermWidget$EmulatorTask run SEVERE: Exception running terminal java.lang.NullPointerException: Cannot invoke "com.jediterm.terminal.TtyConnector.getName()" because "this.this$0.myTtyConnector" is null at com.jediterm.terminal.ui.JediTermWidget$EmulatorTask.run(JediTermWidget.java:376) at java.base/java.lang.Thread.run(Thread.java:833)

Exception in thread "Thread-20" java.lang.NullPointerException: Cannot invoke "com.pty4j.PtyProcess.isAlive()" because "this.process" is null at omega.ui.component.jediterm.JetTerminal.lambda$start$0(JetTerminal.java:142) at java.base/java.lang.Thread.run(Thread.java:833)

omegaui commented 2 years ago

@MR-TLL

Can you please provide a neofetch of your system?

MR-TLL commented 2 years ago
                                 OS: GhostBSD 22.03.11 amd64 
        /- _  `-/  '           Kernel: 13.0-STABLE 
       (/\/ \ \   /\           Uptime: 25 mins 
       / /   | `    \          Packages: 600 (pkg) 
       O O   ) /    |          Shell: fish 3.3.1 
       `-^--'`<     '          Resolution: 1366x768 
      (_.)  _  )   /           DE: MATE 1.26.0 
       `.___/`    /            WM: Metacity (Marco) 
         `-----' /             Theme: Vimix-Dark [GTK2/3] 

<----. / \ Icons: Papirus-Dark [GTK2/3] <----|====O)))==) ) /====| Terminal: kitty <----' --'.__,' \ CPU: Intel Pentium G2030T (2) @ 2.594GHz | | GPU: Xeon E3-1200 v2/3rd Gen Core processor Graphics Control \ / /\ Memory: 2470MiB / 5966MiB

omegaui commented 2 years ago

@MR-TLL I am unable to determine the number of processor/cores available through this.

How many processors does your CPUs has?

MR-TLL commented 2 years ago

Oh!, i have pentium G2030T CPU , 2 cores 2.6 GHz, 6 GB RAM

omegaui commented 2 years ago

the Unable to find full path for "/bin/bash" exception is occuring cause your bash is not located at the expected location.

This can be prevented by updating the bash alternative to /bin/bash file or just creating a file named "bash" in your /bin that is executable and has the following contents

#!/bin/sh
bash "$@"
MR-TLL commented 2 years ago

@omegaui Got it , you are right FreeBSD has different Installed location for bash whereis bash bash: /usr/local/bin/bash /usr/local/man/man1/bash.1.gz

omegaui commented 2 years ago

@MR-TLL

Higher CPU Consumption is linked with providing maximum performance and instant content assistment out of your system. But When you use any other system program while running omegaide in the background you will notice that its CPU consumption will reduce to an optimum limit.

Also if that also not working you can turn off the Content Assist!

As far as I can think is that omegaide should run flawlessly on your system since its more powerful than my system on which I created omegaide.

omegaui commented 2 years ago

@MR-TLL

Are you running an older version of v2.2-beta? It was last updated 4 days ago.

MR-TLL commented 2 years ago

@omegaui Actually since it constantly uses 50 - 75 % cpu constantly, it makes other programs and the system laggy. The cpu consumption never decreases tbh.

Screenshot at 2022-03-25 16-55-25

Can you please guide me how to disable Content Assist.

I am using this release , from github. Screenshot at 2022-03-25 16-52-56

omegaui commented 2 years ago

@MR-TLL Can you please provide a screenshot of your version?

omegaui commented 2 years ago

As for me I have tested omegaide under ubuntu, fedora and arch(instantos) on 2GB RAM and Intel Pentium 2 Core CPU and even though it consumes 100% CPU its does n't blocks other processes.

May be its your os that is unable to handle CPU Scheduling Correctly.

omegaui commented 2 years ago

It also throws these errors when run from terminal :-- aunching Omega IDE ... .projectInfo does n't exists. Attempting to create a new file. Successfully Created the new file .args does n't exists. Attempting to create a new file. Successfully Created the new file Mar 25, 2022 9:38:54 PM com.pty4j.util.ExtractedNative doInit INFO: Extracted pty4j native in 6 ms

These are not errors its just happening cause you are loading a project that was not created with omegaide for the first time.

MR-TLL commented 2 years ago

Screenshot at 2022-03-25 17-24-22

I think it is a little far fetched to say that, FreeBSD is a solid OS used by Netflix and such, i don't think the problem is at OS level, most probably its JVM or Source code level, but i will test it on windows machine too. Its kind of a bummer really, JAVA is WORA ,but platform specific bugs are very apparent :(

MR-TLL commented 2 years ago

even though it consumes 100% CPU its does n't blocks other processes.

Does OmegaIDE uses 100% CPU continuously by default even on other OSes?? If yes then there is something definitely wrong, no ide should consume cpu continuously. OmegaIDE would be event based right? or is everything running inside a big while loop :D

omegaui commented 2 years ago

On my single core CPU yes it consumed 100% CPU gradually.

Its the first time I have seen such terrible execution of omegaide.

I will check this out in a VM of FreeBSD.

I am learning Flutter these days so hardly get any time to check it often.

omegaui commented 2 years ago

Its written in Swing with custom functionality and UI.

So, there nothing like a single while loop but threads actually.

omegaui commented 2 years ago

Well, you can find Content Assist controller by Clicking Code on this version in the code menu.

omegaui commented 2 years ago

I am currently on Windows 11 just waiting for Ubuntu 22.04 to start again with omegaide.

omegaui commented 2 years ago

One more thing Java is not entirely WORA in terms of portability.

MR-TLL commented 2 years ago

On my single core CPU yes it consumed 100% CPU gradually.

That's very unusual i would say.

will check this out in a VM of FreeBSD.

Thanks for checking it out, actually i am using FBSD due to my own problems, since my machine is fairly old, FBSD is the only OS which properly supports it. (Linux has some usability problems :( and win is out of question :D)

I am learning Flutter these days so hardly get any time to check it often.

No problems, please do it on your own pace, i was checking it out since i needed a java editor for small experiments, since intelliJ doesn't runs on FBSD and i hate eclipse/netbeans :dagger:

ts written in Swing with custom functionality and UI.

So, there nothing like a single while loop but threads actually.

Oh that's interesting

Well, you can find Content Assist controller by Clicking Code on this version in the code menu.

No changes, can it be the case that the animations have to do with this?? coz animations are not being disabled even after clicking on the toggler and i doubt this project uses hardware acceleration for the animations.

One more thing Java is not entirely WORA in terms of portability.

True :disappointed:

omegaui commented 2 years ago

coz animations are not being disabled even after clicking on the toggler

That's very unexpected. Looks like the bugs have got the information that I am away.

Well, if it can't be disabled by using the UI.

You can edit .omega-ide/.ui and change Animations Onto false.

omegaui commented 2 years ago

Hardware Acceleration NO!!

The project utilizes a custom ui library that uses buffered graphics cleverly 🙂 to provide super smooth animations that may be giving you the feel of hardware accelerated graphics.

omegaui commented 2 years ago

@MR-TLL

I tested omegaide on same system specs pc (Intel Pentium 2 Cores and 4 GB RAM, which is 6 GB on your side) both before and after recent commits and its working flawlessly with optimum cpu usage (that was around 18% on a single core).

You may reopen this issue if the problem doesn't persists on your side.