Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Richtext editor freezes Capella 7.0.0 on Linux #2879

Open
MoritzWeber0 opened this issue Jun 24, 2024 · 16 comments
Open

Richtext editor freezes Capella 7.0.0 on Linux #2879

MoritzWeber0 opened this issue Jun 24, 2024 · 16 comments

Comments

@MoritzWeber0
Copy link

MoritzWeber0 commented Jun 24, 2024

In the latest pre-release of Capella 7.0.0, the description editor / richtext editor is completely unusable. Whenever I start typing, Capella freezes completely.

Steps to reproduce

  1. Install the latest 7.0.0 Capella bundle on Linux
  2. Start Capella
  3. Create any element that has an description
  4. Open the description field in the Properties tab. It takes a few seconds to load. Then start typing at least two characters and Capella will freeze.

I can also provide a Docker image to reproduce. Let me know if that would help.

Stacktrace

SWT call to Webkit timed out after 10000ms. No return value will be provided.
Possible reasons:
1) Problem: Your javascript needs more than 10000ms to execute.
   Solution: Don't run such javascript, it blocks Eclipse's UI. SWT currently allows such code to complete, but this error is thrown 
     and the return value of execute()/evalute() will be false/null.

2) However, if you believe that your application should execute as expected (in under10000 ms),
 then it might be a deadlock in SWT/Browser/webkit2 logic.
 I.e, it might be a bug in SWT (e.g this does not occur on Windows/Cocoa, but occurs on Linux). If you believe it to be a bug in SWT, then
Please report this issue *with steps to reproduce* via:
 https://bugs.eclipse.org/bugs/enter_bug.cgi?alias=&assigned_to=platform-swt-inbox%40eclipse.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&component=SWT&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-1=X&flag_type-11=X&flag_type-12=X&flag_type-13=X&flag_type-14=X&flag_type-15=X&flag_type-16=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&flag_type-7=X&flag_type-8=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Linux&product=Platform&qa_contact=&rep_platform=PC&requestee_type-1=&requestee_type-2=&short_desc=webkit2_BrowserProblem
For bug report, please atatch this stack trace:
java.lang.Throwable: 
	at org.eclipse.swt.browser.WebKit.getStackTrace(WebKit.java:300)
	at org.eclipse.swt.browser.WebKit.getInternalErrorMsg(WebKit.java:293)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.execAsyncAndWaitForReturn(WebKit.java:1272)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.runjavascript(WebKit.java:1030)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.evaluate(WebKit.java:1000)
	at org.eclipse.swt.browser.WebKit.evaluate(WebKit.java:1299)
	at org.eclipse.swt.browser.WebBrowser.evaluate(WebBrowser.java:406)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:665)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:614)
	at org.eclipse.nebula.widgets.richtext.RichTextEditor$3.completed(RichTextEditor.java:284)
	at org.eclipse.swt.browser.WebKit.lambda$7(WebKit.java:1769)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5040)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4520)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
	at org.polarsys.capella.core.platform.sirius.ui.app.CapellaApplication.start(CapellaApplication.java:118)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1440)

 Additional information about the error is as following:
 The following javascript was executed:
function SWTWebkit2TempFunc1(){initEditor();}; SWTWebkit2TempFunc1()

I've tried several different webkit2gtk versions, also different distributions (Alpine, Fedora & Debian). I could reproduce the issue in all cases.

The issue seems to be different to the other reported issues affecting Capella versions < 7.0.0 on Linux: #2316

@MoritzWeber0
Copy link
Author

MoritzWeber0 commented Jun 24, 2024

I tried both workarounds with environment variables described in eclipse-platform/eclipse.platform.swt#843.

Neither WEBKIT_DISABLE_COMPOSITING_MODE=1 nor WEBKIT_DISABLE_DMABUF_RENDERER=1 have worked for me.

@lfasani
Copy link
Contributor

lfasani commented Jul 2, 2024

Hello

I tried with Ubuntu 22.04.4 as windows11 sub system and I reproduced the issue.
I reproduced with and wihtout WEBKIT_DISABLE_COMPOSITING_MODE=1 nor WEBKIT_DISABLE_DMABUF_RENDERER=1

Nevertheless, I did not get completely freezes but get the Webkit time out of 10000ms.
I also get first this error
libEGL warning: MESA-LOADER: failed to open vgem: /usr/lib/dri/vgem_dri.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce nom (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
It probably comes from a not proper ubuntu installation using wsl.

So to eliminate this additional context problem.
I tested with virtualbox with unbuntu 24.04
This time I also did reproduced but did not get the same errors.
I only got warning

!ENTRY org.polarsys.kitalpha.richtext.widget 2 0 2024-07-02 17:01:32.620
!MESSAGE Rich text widget can not install beforePaste/afterPaste/beforeCommandExec listeners!

!ENTRY org.polarsys.kitalpha.richtext.widget 2 0 2024-07-02 17:01:32.626
!MESSAGE Rich text widget cannot install the open link command
...

Those warning are about java call back that are called when doing things in the CKEditor
At this stage, I have no idea of where the issue is located.

  • Is it in kitalpha that badly set that callback
  • Is it in the CKEditor
  • Is it somewhere in the way webkit do the rendering.

@lfasani
Copy link
Contributor

lfasani commented Jul 3, 2024

I reproduce the issue and the stack trace with ubuntu 24.04.4 in a virtualbox

When the RichTextEditor initializes

Thread [main] (Suspended (breakpoint at line 1761 in WebKit))	
	WebKit.fireProgressCompletedEvent() line: 1761	
	WebKit.webkit_load_changed(long, int, long) line: 2359	
	WebKit.webViewProc(long, long, long) line: 605	
	WebKit.Proc(long, long, long) line: 529	
	GTK3.gtk_main_iteration_do(boolean) line: not available [native method]	
	Display.readAndDispatch() line: 4514	
        ...
private void fireProgressCompletedEvent(){
	Runnable fireProgressEvents = () -> {
		if (browser.isDisposed() || progressListeners == null) return;
		ProgressEvent progress = new ProgressEvent (browser);
		progress.display = browser.getDisplay ();
		progress.widget = browser;
		progress.current = MAX_PROGRESS;
		progress.total = MAX_PROGRESS;
		for (int i = 0; i < progressListeners.length; i++) {
			progressListeners[i].completed (progress);
		}
	};
	browser.getDisplay().asyncExec(fireProgressEvents);
}

There are two progressListeners called in the for loop:

  • The first one is added in /org.eclipse.nebula.widgets.richtext/src/org/eclipse/nebula/widgets/richtext/RichTextEditor.java
  • The second one added in org.polarsys.kitalpha.richtext.nebula.widget.MDENebulaBasedRichTextWidgetImpl

In /org.eclipse.nebula.widgets.richtext/src/org/eclipse/nebula/widgets/richtext/RichTextEditor.java

this.browser.addProgressListener(new ProgressListener() {

	@Override
	public void completed(ProgressEvent event) {
		browser.evaluate("initEditor();"); 

This method fails. So something gets wrong in initEditor()

initEditor() is defined in /org.eclipse.nebula.widgets.richtext/src/org/eclipse/nebula/widgets/richtext/resources/template.html

Edit:

It turns out initEditor calls customizeToolbar which calls the java method org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration.getCustomButtonConfiguration() that will cause evaluation error.

java.lang.Throwable: 
	at org.eclipse.swt.browser.WebKit.getStackTrace(WebKit.java:300)
	at org.eclipse.swt.browser.WebKit.getInternalErrorMsg(WebKit.java:293)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.execAsyncAndWaitForReturn(WebKit.java:1272)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.runjavascript(WebKit.java:1030)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.evaluate(WebKit.java:1000)
	at org.eclipse.swt.browser.WebKit.evaluate(WebKit.java:1299)
	at org.eclipse.swt.browser.WebBrowser.evaluate(WebBrowser.java:406)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:665)
	at org.eclipse.swt.browser.Browser.evaluate(Browser.java:614)
	at org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration.customizeToolbar(RichTextEditorConfiguration.java:613)

And then browser.evaluate("initEditor();"); will end up with similar stack trace.
Why? I do not know so far.

The executed script is : CKEDITOR.instances.editor.addCommand('openEditor', { exec: function (edt) { javaExecutionStarted(); openEditor(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('openEditor', { label: 'Open in Editor', command: 'openEditor', toolbar: 'enableEdit', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget/icons/openInEditor.gif', }); CKEDITOR.instances.editor.addCommand('MDESave', { exec: function (edt) { javaExecutionStarted(); MDESave(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('MDESave', { label: 'Save editor', command: 'MDESave', toolbar: 'mdesave', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/save_image.gif', }); CKEDITOR.instances.editor.addCommand('Refresh', { exec: function (edt) { javaExecutionStarted(); Refresh(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('Refresh', { label: 'Refresh editor', command: 'Refresh', toolbar: 'Refresh', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/refresh.gif', }); CKEDITOR.instances.editor.addCommand('MDESave', { exec: function (edt) { javaExecutionStarted(); MDESave(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('MDESave', { label: 'Save editor content', command: 'MDESave', toolbar: 'mdesave', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/save_image.gif', }); CKEDITOR.instances.editor.addCommand('Refresh', { exec: function (edt) { javaExecutionStarted(); Refresh(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('Refresh', { label: 'Refresh editor', command: 'Refresh', toolbar: 'Refresh', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/refresh.gif', }); CKEDITOR.instances.editor.addCommand('Clean', { exec: function (edt) { javaExecutionStarted(); Clean(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('Clean', { label: 'Clean', command: 'Clean', toolbar: 'clean', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/clear.gif', }); CKEDITOR.instances.editor.addCommand('Addlink', { exec: function (edt) { javaExecutionStarted(); Addlink(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('Addlink', { label: 'Link', command: 'Addlink', toolbar: 'mdelinks', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/add_link.gif', }); CKEDITOR.instances.editor.addCommand('AddImage', { exec: function (edt) { javaExecutionStarted(); AddImage(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('AddImage', { label: 'Add Image', command: 'AddImage', toolbar: 'mdelinks', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/_TP/2023_03_cdo422/../../_git/kitalpha/richtext/plugins/org.polarsys.kitalpha.richtext.widget.tools/icons/add_image.gif', }); CKEDITOR.instances.editor.addCommand('OpenInEditor', { exec: function (edt) { javaExecutionStarted(); OpenInEditor(); javaExecutionFinished() } }); CKEDITOR.instances.editor.ui.addButton('OpenInEditor', { label: 'Open in Editor', command: 'OpenInEditor', toolbar: 'enableEdit', icon: 'file:/home/laurent/DEV/_eclipse/dev-2023-03/eclipse-workspace/.metadata/.plugins/org.eclipse.pde.core/T4C/org.eclipse.osgi/1130/0/.cp/icons/full/obj16/open_in_editor.gif', });
Good luck to know what wrong happened there :/

@MoritzWeber0
Copy link
Author

Hey @lfasani,

thanks for the detailed investigation, appreciate it!

The warnings (Rich text widget can not install * listeners) exist for a long time already and were also printed in Capella 6.0.0. I'm not sure how they are related to the actual issue.

I think that the JavaScript timeout is responsible for the freezes.

It's interesting that you don't see the freezes in your installation (We have reproduced it on debian, fedora and ArchLinux). Maybe it's related to specific versions of other dependencies. But hard to figure out which dependency is responsible for it.
Which versions of libwebkitgtk do you installed in your VM?

I'll try to run Capella against webkit2gtk-4.1 instead of libwebkit2gtk-4.0-37 (Probably needs this commit eclipse-platform/eclipse.platform.swt@4d1d26a tho).

@lfasani
Copy link
Contributor

lfasani commented Jul 4, 2024

Hello
To clarify, I did get the javascript timeout of 10s but, after that, the Capella is still usable (the Capella is not freezed).

To complete the analysis in my previous comment, I tried to understand what was problematic in the script(I supposed for example that CKEDITOR.instances.editor.addCommand was undefined), I manually changed the injected JavaScript in org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration and I ended up figuring out that just the script console.log('hello') will make the evaluation fail. I have no clue why this simple instruction make the evaluation fail.
So I have no lead to progress except debugging the CKEditor JavaScript.

Otherwise, Capella is using libwebkit2gtk-4.1-0:amd64 2.44.2-0ubuntu0.24.04.1

@MoritzWeber0
Copy link
Author

MoritzWeber0 commented Jul 4, 2024

Thanks for the clarification, then we are on the same line. My Capella is also usable again after 10 seconds, but I'd still consider that as not really usable if I have to wait 10 seconds after each keystroke.

Some users have reported that newer commits in eclipse.platform.swt fixed the issue. Can we get a Capella build which includes the latest version of eclipse.platform.swt to try it out?

As another workaround, is it maybe possible to reduce the timeout to a really low value to reduce the long freeze time?
If possible, we should set it to a value of 100ms.
https://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/bundles/org.eclipse.swt/Eclipse%20SWT%20WebKit/gtk/org/eclipse/swt/browser/WebKit.java#n117

@lfasani
Copy link
Contributor

lfasani commented Jul 4, 2024

Reducing the timeout will get you nowhere. Because, under the hood, the problem is that the scripts are not executed and so the java callback that do the link between the Capella model and the CKEditor is broken.
In concrete terms, getText() and setText() are not called so the description in the Capella model can be read not saved. So the editor is just a blank board connected to nothing.

@mPorhel
Copy link
Contributor

mPorhel commented Jul 5, 2024

Hi Moritz,

Eclipse Capella 7.0 is built on top of Eclipse 2023-03.

I have just tried to launch the Nebula RichTextEditor sample from a fresh Eclipse 2024-06 on Ubuntu 22.04, I get the same initialization error.

org.eclipse.swt.gtk.linux.aarch64_3.126.0.v20240528-0813.jar:

It contains the patch you mention.

@MoritzWeber0
Copy link
Author

Hi Moritz,

Eclipse Capella 7.0 is built on top of Eclipse 2023-03.

I have just tried to launch the Nebula RichTextEditor sample from a fresh Eclipse 2024-06 on Ubuntu 22.04, I get the same initialization error.

org.eclipse.swt.gtk.linux.aarch64_3.126.0.v20240528-0813.jar:

It contains the patch you mention.

Thanks for trying out. Can you try the new version with the variables WEBKIT_DISABLE_COMPOSITING_MODE=1 and WEBKIT_DISABLE_DMABUF_RENDERER=1?

@mPorhel
Copy link
Contributor

mPorhel commented Jul 5, 2024

My test was done with and without those variables.
Same situation on 22.04 and on 24.04 from @lfasani

@jamilraichouni
Copy link

Hi @mPorhel, can you share stdout/ stderr, please?

@jamilraichouni
Copy link

jamilraichouni commented Jul 7, 2024

Hi @lfasani , hi @mPorhel,

The problem is independent from the classes defined in the org.eclipse.nebula.widgets.richtext package and can be reproduced without any richtext widget.

The RichtextEditor widget in Capella fails, because the method .evaluate() of the org.eclipse.swt.browser.Browser refuses to execute Javascript code as @lfasani already figured out.

The RichTextEditor tries that in this line 233:

https://github.com/eclipse/nebula/blob/31f40e4e56e006f54e87eae14b23c36dbd79f09b/widgets/richtext/org.eclipse.nebula.widgets.richtext/src/org/eclipse/nebula/widgets/richtext/resources/template.html#L233

which in turn calls a Java method which is located in line 612 here:

https://github.com/eclipse/nebula/blob/31f40e4e56e006f54e87eae14b23c36dbd79f09b/widgets/richtext/org.eclipse.nebula.widgets.richtext/src/org/eclipse/nebula/widgets/richtext/RichTextEditorConfiguration.java#L612

Whatever non-empty Javascript string we pass to browser.evaluate(), it will time out after 10 seconds.

One can demonstrate that wihout the Richtext widget:

TestBrowser.java:

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.BrowserFunction;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.SelectionEvent;
import java.io.File;

public class TestBrowser extends Composite {
    Browser browser;
    public static void main(String[] args) {
        Display display = Display.getDefault();
        Shell shell = new Shell(display, SWT.MIN | SWT.CLOSE);
        shell.setText("SWT Browser test");
        shell.setSize(500, 400);
        shell.setLayout(new FillLayout());
        TestBrowser testWindow = new TestBrowser(shell);
        testWindow.createBrowser();
        shell.open();
        while (!display.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }
    int y = 0;
    TestBrowser(Shell shell) {
        super(shell, SWT.BORDER);
        this.setSize(400, 400);
        Button button = new Button(this, SWT.PUSH);
        button.setText("Create a browser");
        button.setLocation(200, 250);
        button.pack();
        button.addSelectionListener(new SelectionListener() {
            @Override
            public void widgetDefaultSelected(SelectionEvent arg0) {

            }
            @Override
            public void widgetSelected(SelectionEvent arg0) {
                createBrowser();
            }
        });
    }

    public void createBrowser() {
        System.out.println("\nCreate a new browser");
        browser = new Browser(this, SWT.BORDER);
        browser.setSize(400, 200);
        browser.setLocation(0, y);
        File htmlFile;
        htmlFile = new File("test.html");
        browser.setUrl(htmlFile.getAbsolutePath());
        final BrowserFunction brf = new JavaFunction(browser, "callJavaFunction");
        y = y + 200;
    }

    private class JavaFunction extends BrowserFunction {
        String name;
        JavaFunction(Browser browser, String name) {
            super(browser, name);
            this.name = name;
        }
        @Override
        public Object function(Object[] arguments) {
            System.out.println("Java called from Javascript");
            if (name.equals("callJavaFunction")) {
                System.out.println("function callJava with argument : " + arguments[0]);
            }
            browser.evaluate("var a = 1;");
            System.out.println("SUCCESS!");
            return null;
        }
    }
}

test.html:

<html>
    <head>
        <script type="text/javascript">
            function hello(msg) {
                try {
                    callJavaFunction(msg);
                } catch (e) {
                    alert(e.message);
                }
            }
        </script>
    </head>
    <body>
        <h1>WebKit Version</h1>
        <p id="userAgent"></p>
        <script>
            document.getElementById('userAgent').innerText = navigator.userAgent;
        </script>
        <a href="javascript:hello('link clicked')">click here</a>
    </body>
</html>

This code executes just fine and opens the following window in a Fedora Docker container on an aarch64 macOS:

image

When one clicks on the link labelled as "click here", we get (after waiting the 10 seconds) the same timeout message:

image

@jamilraichouni
Copy link

jamilraichouni commented Jul 7, 2024

The same isolated SWT browser code which tries to execute some Javascript runs without a failure/ timeout on macOS (aarch64):
image

image

In both cases (Linux and macOS) I have put the SWT libs from capella/plugins of the Capella 7.0.0-S20240619 downloads (
https://download.eclipse.org/capella/core/products/stable/7.0.0-S20240619/) to the classpath:

org.eclipse.swt_3.123.0.v20230220-1431.jar

and

org.eclipse.swt.gtk.linux.aarch64_3.123.0.v20230220-1431.jar respectively

org.eclipse.swt.cocoa.macosx.aarch64_3.123.0.v20230220-1431.jar

@mPorhel
Copy link
Contributor

mPorhel commented Jul 8, 2024

Hi @jamilraichouni,

I got the same errors/stacks than Laurent, Moritz and you.

@mPorhel
Copy link
Contributor

mPorhel commented Jul 8, 2024

Hi @jamilraichouni

I have run your TestBrowser snippet with eclipse-committers-2024-06-R-linux-gtk-aarch6 with org.eclipse.swt_3.126.0.v20240528-0813.jar and org.eclipse.swt.gtk.linux.aarch64_3.126.0.v20240528-0813.jar I get exactly the same behavior/logs than you with Capella 7 (Eclipse 2023-03).

@mPorhel
Copy link
Contributor

mPorhel commented Jul 9, 2024

Hi @jamilraichouni

In parallel to the discussion in the Eclipse/Webkit browser issue, I am testing a second approach to avoid the observed deadlock with a few workraounds directly inside Capella/Kitalpha's Richtext configuration, functions and helpers for the Webkit/gtk case.

I currently have some interesting results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants