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

Blank web views on Nvidia (with proprietary drivers?) #422

Closed
Ambrevar opened this issue Sep 29, 2019 · 68 comments
Closed

Blank web views on Nvidia (with proprietary drivers?) #422

Ambrevar opened this issue Sep 29, 2019 · 68 comments
Assignees

Comments

@Ambrevar
Copy link
Member

Ambrevar commented Sep 29, 2019

Nvidia owners have complained that the web views are completely blank unless WEBKIT_DISABLE_COMPOSITING_MODE=1 is exported beforehand.

Epiphany does not suffer from this issue on the same machines, so we might be doing something wrong.

A comment I wrote in the platform port:

	// WebKitGTK+ 2.24 seems to have a bug when transitionning hardware
	// acceleration policy (for composition), so we need to force it for buffers.
	// It seems that there is no need to force it for the minibuffer.
	// TODO: This could be a problem for systems where hardware acceleration is
	// not available.

A workaround would be to test if compositing mode is supported and then chose between ALWAYS and NEVER.

The bug may be fixed in WebKitGTK 2.26.

@Ambrevar
Copy link
Member Author

Upstream report: https://bugs.webkit.org/show_bug.cgi?id=199570

@alphapapa
Copy link

This is also the case for me, but I have an AMD card, using proprietary drivers on Ubuntu. Exporting the variable fixed the problem.

The log from the failure showed:

MESA-LOADER: failed to open swrast (search paths /usr/lib/fglrx/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/dri:/usr/lib32/fglrx/dri:/usr/lib/i386-linux-gnu/dri)
libGL error: failed to load driver: swrast

@Ambrevar
Copy link
Member Author

Ambrevar commented Oct 2, 2019 via email

@Ambrevar
Copy link
Member Author

Ambrevar commented Oct 2, 2019 via email

@jmercouris
Copy link
Member

Can you check the logs to see if a log is emitted that a driver failed to load? Is there a hash define that checks for this that you can put somewhere?

@alphapapa
Copy link

Maybe not exactly the solution, but why not using the free drivers? They tend to fare very well these days ;)

@Ambrevar Because they are necessary on my system.

@bqv
Copy link
Contributor

bqv commented Jan 18, 2020

I have noticed this on my AMDGPU system. Tested using nix, versions 1.3.4 and 1.4.0, both behave as described until I set WEBKIT_DISABLE_COMPOSITING_MODE=1.

This isn't just NVIDIA.

Edit: nothing of note in the logfile

@Ambrevar
Copy link
Member Author

Ambrevar commented Jan 18, 2020 via email

@bqv
Copy link
Contributor

bqv commented Jan 18, 2020

uname -a: Linux delta 5.4.0-gentoo #1 SMP Sun Dec 8 19:27:07 GMT 2019 x86_64 Intel(R) Core(TM) i5-4690K CPU @ 3.50GHz GenuineIntel GNU/Linux

lsmod | grep amd:
amdgpu 4526080 35
gpu_sched 36864 1 amdgpu
ttm 110592 1 amdgpu
drm_kms_helper 200704 2 amdgpu,i915
drm 577536 11 gpu_sched,drm_kms_helper,amdgpu,i915,ttm
mfd_core 16384 2 lpc_ich,amdgpu
i2c_algo_bit 16384 3 igb,amdgpu,i915
i2c_core 94208 7 videodev,drm_kms_helper,i2c_algo_bit,igb,amdgpu,i915,drm
pata_amd 24576 0

If it isn't obvious, I'm running gentoo, even though i'm running next through nix. There isn't a trace of NVIDIA in my system

@Ambrevar
Copy link
Member Author

Ambrevar commented Jan 18, 2020 via email

@bqv
Copy link
Contributor

bqv commented Jan 18, 2020

I do have an integrated i915 yes, it should be entirely not in use at the moment

@Hugal31
Copy link

Hugal31 commented Feb 6, 2020

Can reproduce both on a laptop and desktop with proprietary NVIDIA driver. The environment variable fixes the issue.

@Ambrevar
Copy link
Member Author

Can anyone reproduce this on master?

@Ambrevar Ambrevar added the 2-series Related to releases whose major version is 2. label Mar 30, 2020
@bqv
Copy link
Contributor

bqv commented Mar 30, 2020

@mmequignon here is a nix-based shell script to run next from git master. Could you try and reproduce this? https://gist.github.com/bqv/3dd7032b793dcf3b7bdf1ea55daa747e

@Ambrevar
Copy link
Member Author

Next 2.0 is going to be released very soon. Can anyone confirm that Next works properly with Nvidia proprietary drivers?

@mmequignon
Copy link

@bqv Sorry for the late response, here is the error I get

./next-git.sh 
these derivations will be built:
  /nix/store/6c6apjvmsgx0adxd00vm0xdibffccp3g-source.drv
  /nix/store/xh0hh132siax7c2m18jxidpqrjazbmks-next-1.5.0.drv
these paths will be fetched (0.05 MiB download, 0.28 MiB unpacked):
  /nix/store/qr6dpv0wl37p00rdj5pijn1mkz0wfkwd-bash-interactive-4.4-p23-dev
copying path '/nix/store/qr6dpv0wl37p00rdj5pijn1mkz0wfkwd-bash-interactive-4.4-p23-dev' from 'https://cache.nixos.org'...
building '/nix/store/6c6apjvmsgx0adxd00vm0xdibffccp3g-source.drv'...

trying https://github.com/next-browser/next/archive/master.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   126  100   126    0     0    448      0 --:--:-- --:--:-- --:--:--   448
100   127  100   127    0     0    403      0 --:--:-- --:--:-- --:--:--   403
100  609k    0  609k    0     0   552k      0 --:--:--  0:00:01 --:--:-- 1025k
unpacking source archive /build/master.tar.gz
building '/nix/store/xh0hh132siax7c2m18jxidpqrjazbmks-next-1.5.0.drv'...
mkdir: cannot create directory '/homeless-shelter': Permission denied
unpacking sources
unpacking source archive /nix/store/5w2zybi5asail274xzzqns39v3pbykqq-source
source root is source
patching sources
substitute(): ERROR: file 'source/ports/gtk-webkit.lisp' does not exist
builder for '/nix/store/xh0hh132siax7c2m18jxidpqrjazbmks-next-1.5.0.drv' failed with exit code 1
error: build of '/nix/store/xh0hh132siax7c2m18jxidpqrjazbmks-next-1.5.0.drv' failed

@bqv
Copy link
Contributor

bqv commented Apr 19, 2020

@mmequignon no problem! The package on nixpkgs is somewhat bizarrely difficult to override properly so i think this will no longer work (see NixOS/nixpkgs#85465). Maybe easier to just build in an impure environment manually and test that? Try nix-shell -p glibcLocales sbcl and just run the standard build procedure. It would be quite helpful to see if the bug still happens on master before 2.0

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 19, 2020 via email

@mmequignon
Copy link

I created a derivation and tried to install it that way :

with import <nixpkgs> {};

stdenv.mkDerivation {
    name = "next";

    src = fetchFromGitHub {
      owner = "next-browser";
      repo = "next";
      rev = "master";
      sha256 = "1s6dbjp73rhdjplj05jpg5jlsfkgjf2inhs9ng7ivkfr9y4qgqbs";
    };

    NEXT_INTERNAL_QUICKLISP = "true"; 

    buildInputs = [
        pkgs.glibcLocales
        pkgs.xclip
        pkgs.curl
        pkgs.sbcl
    ];
}

but I can't make it work (I'm a beginner with nix expressions). It complains about cl-webkit missing.
Which means I need to create another derivation to install that packages, given that it does not exists in nixpkgs.

nix-build
these derivations will be built:
  /nix/store/3fa6d6rqwisfrfdhryyj8gv02bqy945b-next.drv
building '/nix/store/3fa6d6rqwisfrfdhryyj8gv02bqy945b-next.drv'...
unpacking sources
unpacking source archive /nix/store/9g48hacj798l73w01mxf8qi1bf3ns8pv-source
source root is source
patching sources
configuring
no configure script, doing nothing
building
build flags: SHELL=/nix/store/ffli6m23501dkiznwlkf6n4xvrj02snr-bash-4.4-p23/bin/bash
Usage:

   make next                Create Next.
   make install-next        Install Next.

   make all                 Create Next.
   make install             Install Next.

Set DESTDIR to change the target destinatation.  It should be
an absolute path.

Set LISP and LISP_FLAGS to accommodate to your Lisp compiler.

Set NEXT_RENDERER to the renderer of your choice, e.g. "gtk".

If NEXT_INTERNAL_QUICKLISP is "true" (the default), all Lisp
dependencies will be fetched with Quicklisp into the
QUICKLISP_DIR directory.

Otherwise, the dependencies will have to be locally installed
on your system.  You may have to accomodate the LISP_FLAGS
to, use your local install of Quicklisp.  For example:

make next NEXT_INTERNAL_QUICKLISP=false LISP_FLAGS=
installing
install flags: SHELL=/nix/store/ffli6m23501dkiznwlkf6n4xvrj02snr-bash-4.4-p23/bin/bash install
make application
make[1]: Entering directory '/build/source'
true && make deps || true
make[2]: Entering directory '/build/source'
true && curl --output quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp || true
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: beta.quicklisp.org
true && rm -rf quicklisp || true
mkdir -p quicklisp
true && sbcl --no-userinit --non-interactive \
        --eval '(require "asdf")' \
        --load quicklisp.lisp \
        --eval '(quicklisp-quickstart:install :path "quicklisp/")' \
        --eval '(uiop:quit)' || true
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load #P"quicklisp.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"quicklisp.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS (#P"quicklisp.lisp"))
4: (LOAD #P"quicklisp.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:LOAD . "quicklisp.lisp") (:EVAL . "(quicklisp-quickstart:install :path \"quicklisp/\")") (:EVAL . "(uiop:quit)") (:QUIT)))
6: (SB-IMPL::TOPLEVEL-INIT)
7: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
8: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
9: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
if true; then \
                [ -e "quicklisp"/local-projects/cl-webkit ] && \
                        git -C "quicklisp"/local-projects/cl-webkit pull || \
                        git clone https://github.com/joachifm/cl-webkit "quicklisp"/local-projects/cl-webkit ; \
        else \
                mkdir -p ~/common-lisp && \
                [ -e ~/common-lisp/cl-webkit ] && \
                        git -C ~/common-lisp/cl-webkit pull || \
                        git clone https://github.com/joachifm/cl-webkit ~/common-lisp/cl-webkit ; \
        fi
/nix/store/ffli6m23501dkiznwlkf6n4xvrj02snr-bash-4.4-p23/bin/bash: line 3: git: command not found
make[2]: *** [Makefile:129: cl-webkit] Error 127
make[2]: Leaving directory '/build/source'
env NEXT_INTERNAL_QUICKLISP=true sbcl --no-userinit --non-interactive \
        --eval '(require "asdf")' \
        --eval '(when (string= (uiop:getenv "NEXT_INTERNAL_QUICKLISP") "true") (load "quicklisp/setup.lisp"))' \
        --eval '(ql:quickload :swank)' \
        --eval '(load (merge-pathnames  "contrib/swank-asdf.lisp" swank-loader:*source-directory*))' \
        --eval '(swank:delete-system-fasls "next")' \
        --eval '(uiop:quit)' || true
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load "quicklisp/setup.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME "quicklisp/setup.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS ("quicklisp/setup.lisp"))
4: (LOAD "quicklisp/setup.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD "quicklisp/setup.lisp") #<NULL-LEXENV>)
6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (WHEN (STRING= (UIOP/OS:GETENV "NEXT_INTERNAL_QUICKLISP") "true") (LOAD "quicklisp/setup.lisp")) #<NULL-LEXENV>)
7: (EVAL (WHEN (STRING= (UIOP/OS:GETENV "NEXT_INTERNAL_QUICKLISP") "true") (LOAD "quicklisp/setup.lisp")))
8: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:EVAL . "(when (string= (uiop:getenv \"NEXT_INTERNAL_QUICKLISP\") \"true\") (load \"quicklisp/setup.lisp\"))") (:EVAL . "(ql:quickload :swank)") (:EVAL . "(load (merge-pathnames  \"contrib/swank-asdf.lisp\" swank-loader:*source-directory*))") (:EVAL . "(swank:delete-system-fasls \"next\")") (:EVAL . "(uiop:quit)") (:QUIT)))
9: (SB-IMPL::TOPLEVEL-INIT)
10: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
11: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
12: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
true && curl --output quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp || true
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: beta.quicklisp.org
true && rm -rf quicklisp || true
mkdir -p quicklisp
true && sbcl --no-userinit --non-interactive \
        --eval '(require "asdf")' \
        --load quicklisp.lisp \
        --eval '(quicklisp-quickstart:install :path "quicklisp/")' \
        --eval '(uiop:quit)' || true
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load #P"quicklisp.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"quicklisp.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS (#P"quicklisp.lisp"))
4: (LOAD #P"quicklisp.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:LOAD . "quicklisp.lisp") (:EVAL . "(quicklisp-quickstart:install :path \"quicklisp/\")") (:EVAL . "(uiop:quit)") (:QUIT)))
6: (SB-IMPL::TOPLEVEL-INIT)
7: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
8: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
9: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
true && sbcl --no-userinit --non-interactive \
        --load quicklisp/setup.lisp \
        --eval '(require "asdf")' \
        --eval '(ql:update-dist "quicklisp" :prompt nil)' \
        --eval '(uiop:quit)' || true
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load #P"quicklisp/setup.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1001574293}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1001574293}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1001574293}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"quicklisp/setup.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS (#P"quicklisp/setup.lisp"))
4: (LOAD #P"quicklisp/setup.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:LOAD . "quicklisp/setup.lisp") (:EVAL . "(require \"asdf\")") (:EVAL . "(ql:update-dist \"quicklisp\" :prompt nil)") (:EVAL . "(uiop:quit)") (:QUIT)))
6: (SB-IMPL::TOPLEVEL-INIT)
7: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
8: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
9: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
true && make deps || true
make[2]: Entering directory '/build/source'
true && curl --output quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp || true
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: beta.quicklisp.org
true && rm -rf quicklisp || true
mkdir -p quicklisp
true && sbcl --no-userinit --non-interactive \
        --eval '(require "asdf")' \
        --load quicklisp.lisp \
        --eval '(quicklisp-quickstart:install :path "quicklisp/")' \
        --eval '(uiop:quit)' || true
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load #P"quicklisp.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50093}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"quicklisp.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS (#P"quicklisp.lisp"))
4: (LOAD #P"quicklisp.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:LOAD . "quicklisp.lisp") (:EVAL . "(quicklisp-quickstart:install :path \"quicklisp/\")") (:EVAL . "(uiop:quit)") (:QUIT)))
6: (SB-IMPL::TOPLEVEL-INIT)
7: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
8: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
9: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
if true; then \
                [ -e "quicklisp"/local-projects/cl-webkit ] && \
                        git -C "quicklisp"/local-projects/cl-webkit pull || \
                        git clone https://github.com/joachifm/cl-webkit "quicklisp"/local-projects/cl-webkit ; \
        else \
                mkdir -p ~/common-lisp && \
                [ -e ~/common-lisp/cl-webkit ] && \
                        git -C ~/common-lisp/cl-webkit pull || \
                        git clone https://github.com/joachifm/cl-webkit ~/common-lisp/cl-webkit ; \
        fi
/nix/store/ffli6m23501dkiznwlkf6n4xvrj02snr-bash-4.4-p23/bin/bash: line 3: git: command not found
make[2]: *** [Makefile:129: cl-webkit] Error 127
make[2]: Leaving directory '/build/source'
env NEXT_INTERNAL_QUICKLISP=true sbcl --no-userinit --non-interactive \
        --eval '(require "asdf")' \
        --eval '(when (string= (uiop:getenv "NEXT_INTERNAL_QUICKLISP") "true") (load "quicklisp/setup.lisp"))' \
        --load next.asd \
        --eval '(asdf:make :next/gtk-application)' \
        --eval '(uiop:quit)' || (printf "\n%s\n%s\n" "Compilation failed, see the above stacktrace." "Also make sure 'xclip' and latest cl-webkit are available on your system." && exit 1)
This is SBCL 2.0.0.nixos, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {10005184C3}>:
  Couldn't load "quicklisp/setup.lisp": file does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<Couldn't load ~S: file does not exist.~@:>" {1002B50AB3}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME "quicklisp/setup.lisp" :FORMAT-CONTROL "~@<Couldn't load ~S: file does not exist.~@:>" :FORMAT-ARGUMENTS ("quicklisp/setup.lisp"))
4: (LOAD "quicklisp/setup.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LOAD "quicklisp/setup.lisp") #<NULL-LEXENV>)
6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (WHEN (STRING= (UIOP/OS:GETENV "NEXT_INTERNAL_QUICKLISP") "true") (LOAD "quicklisp/setup.lisp")) #<NULL-LEXENV>)
7: (EVAL (WHEN (STRING= (UIOP/OS:GETENV "NEXT_INTERNAL_QUICKLISP") "true") (LOAD "quicklisp/setup.lisp")))
8: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:EVAL . "(when (string= (uiop:getenv \"NEXT_INTERNAL_QUICKLISP\") \"true\") (load \"quicklisp/setup.lisp\"))") (:LOAD . "next.asd") (:EVAL . "(asdf:make :next/gtk-application)") (:EVAL . "(uiop:quit)") (:QUIT)))
9: (SB-IMPL::TOPLEVEL-INIT)
10: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
11: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
12: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting

Compilation failed, see the above stacktrace.
Also make sure 'xclip' and latest cl-webkit are available on your system.
make[1]: *** [Makefile:41: application] Error 1
make[1]: Leaving directory '/build/source'
make: *** [Makefile:36: next] Error 2
builder for '/nix/store/3fa6d6rqwisfrfdhryyj8gv02bqy945b-next.drv' failed with exit code 2
error: build of '/nix/store/3fa6d6rqwisfrfdhryyj8gv02bqy945b-next.drv' failed

@Ambrevar I might need some help here, thanks !

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 19, 2020 via email

@bqv
Copy link
Contributor

bqv commented Apr 19, 2020

The problem you're going to hit is that building with nix requires network access, or an output hash, or updating the nix commonlisp packages (because there is at least one new dependency not there) :D that's why I was suggesting do it impurely to save time. We can worry about updating nixpkgs once 2.0 has been released

@Ambrevar
Copy link
Member Author

Sorry, the right user to ping here was @nlewo ;)

@GrafBlutwurst
Copy link

GrafBlutwurst commented Jun 26, 2020

So i have a local environment running with nix with the following default.nix nix-shell --pure default.nix followed by make all (or a couple make alls to recover from dependency errors) builds nyxt successfully. however it still requires the env variable to be set.

This is as of 04795c1

Below my default.nix

with import <nixpkgs> { };
stdenv.mkDerivation rec {
  pname = "nyxt";
  version = "SNAPSHOT";

  nativeBuildInputs = [
    sbcl
  ] ++ (with lispPackages; [
    prove-asdf
    trivial-features
  ]);

  buildInputs = with lispPackages; [
    alexandria
    bordeaux-threads
    cl-annot
    cl-ansi-text
    cl-css
    cl-json
    cl-markup
    cl-ppcre
    cl-ppcre-unicode
    cl-prevalence
    closer-mop
    dbus
    dexador
    ironclad
    local-time
    log4cl
    lparallel
    mk-string-metrics
    openssl
    parenscript
    plump
    quri
    serapeum
    sqlite
    str
    swank
    trivia
    trivial-clipboard
    trivial-types
    unix-opts
  ];

  LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [
    pkgs.cairo
    pkgs.gdk-pixbuf
    pkgs.glib
    pkgs.gtk3
    pkgs.libfixposix
    pkgs.openssl
    pkgs.pango
    pkgs.webkitgtk
  ];

  WEBKIT_DISABLE_COMPOSITING_MODE = "1";

}

@Ambrevar
Copy link
Member Author

Ambrevar commented Jun 26, 2020 via email

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 8, 2021

No, I'd like to implement the queue first, because we also need to fix the slow startup issue when there is a race condition on the Libsoup table access.

@jmercouris
Copy link
Member

I have great news, I can reproduce this by changing the drivers my system uses from Noveau to proprietary. That means I can test it. I think I will try with the cl-webkit simple browser and see if I can reproduce it. Then I may also try epiphany.

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 14, 2021 via email

@brongulus
Copy link
Contributor

brongulus commented Apr 16, 2021

To add onto this issue, I've used nyxt on my arch OS with proprietary NVIDIA drivers without any crashes, but today when I installed nyxt using guix package manage on arch and ran that, I came across the libGL errors: No matching fbConfigs or visuals found and failed to load driver: swrast, even running nyxt with env WEBKIT_DISABLE_COMPOSTING_MODE=1 nyxt didn't achieve much success and on opening some webpages nyxt crashed with the same error. Any idea what's going on, why it works with arch and NVIDIA but not via guix?

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 16, 2021 via email

@brongulus
Copy link
Contributor

brongulus commented Apr 16, 2021

No particular reason, I was just checking out guix and wanted to see how it'd fare with external drivers :)

@jmercouris
Copy link
Member

I can reproduce this issue / solution in cl-webkit's simple browser.

That is:

  • Nvidia driver = blank screen on websites that utilize compositing
  • Setting an environment variable to disable compositing fixes the issue

@jmercouris
Copy link
Member

@Ambrevar I've been investigating this issue for quite some time, and the conditions to reproduce it only seem to be "Use an Nvidia graphics card with a proprietary driver". Some other ports of it /seem/ to work without this kludge. Perhaps the problem is isolated to NixOS and Guix. The NixOS discussion seems to lead me to believe that. I instead advice that we include a troubleshooting section in our documentation that suggests setting:

(setf (uiop:getenv "WEBKIT_DISABLE_COMPOSITING_MODE") "1")

when getting blank screens. It seems to me a heavy handed approach to disable compositing automatically when it IS capable of working on some systems.

@jmercouris
Copy link
Member

Additionally, looking through the history of the issue, "alphapapa" also experienced a problem, but with an AMD card. I don't think this is our problem to fix or handle.

@jmercouris jmercouris assigned jmercouris and unassigned Ambrevar Apr 20, 2021
@jmercouris
Copy link
Member

Another note; you do not need to visit a specific website to force breakage. You can simply use the following:

(setf (uiop:getenv "WEBKIT_FORCE_COMPOSITING_MODE") "1")

this will force compositing, and you can see if it works with your graphics card/driver combination.

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 20, 2021 via email

@jmercouris
Copy link
Member

@Ambrevar I'm afraid a command does not work. Invoking the command after startup does not work. It only works if you invoke it before the creation of ANY webview. I will investigate adding it to our common settings. The user can still view webviews that do not trigger compositing/hw acceleration.

@jmercouris
Copy link
Member

I've added it to our common settings, which are still accessible even if the user has compositing enabled on one of the effected systems.

@jmercouris
Copy link
Member

I've also added it to the manual.

@jmercouris
Copy link
Member

With that, I think that is all we can reasonably expect to do. I will remove the 2.0.0 label, and leave this issue open.

@jmercouris jmercouris removed the 2-series Related to releases whose major version is 2. label Apr 20, 2021
@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 20, 2021 via email

@jmercouris
Copy link
Member

There is a command line argument to disable compositing, export! The user can just eval it in their terminal, I don't think this should be a command line argument of Nyxt

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 20, 2021 via email

@arjaz
Copy link

arjaz commented Apr 22, 2021

I had the same problem and exporting WEBKIT_DISABLE_COMPOSITING_MODE to 1 didn't help at all.
What helped, though, is installing gst-plugins-good. Now everything just works.

@jmercouris
Copy link
Member

Those are effectively required for Nyxt to function on the modern internet.

@Ambrevar
Copy link
Member Author

Ambrevar commented Apr 22, 2021 via email

@arjaz
Copy link

arjaz commented Apr 22, 2021

It was youtube mostly when starting a video. I also experienced it on slack.
I'm not sure if that solution belongs here, but I'm just happy I can switch to nyxt.

@jmercouris
Copy link
Member

That perfectly explains :-)

@MagicRB
Copy link

MagicRB commented Nov 22, 2021

I had the same problem and exporting WEBKIT_DISABLE_COMPOSITING_MODE to 1 didn't help at all. What helped, though, is installing gst-plugins-good. Now everything just works.

I'm on nvidia and gst-plugins-good is installed, but i still have to set WEBKIT_DISABLE_COMPOSITING_MODE to 1. Also I'm on NixOS.

@aadcg
Copy link
Member

aadcg commented May 28, 2023

Stale.

@aadcg aadcg closed this as completed May 28, 2023
@aadcg aadcg closed this as not planned Won't fix, can't repro, duplicate, stale May 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests