Nixpkgs: helm: fails to start with MESA errors

Created on 19 Aug 2020  路  9Comments  路  Source: NixOS/nixpkgs

Describe the bug

When I start helm (the synthesizer), I get MESA errors:

libGL error: MESA-LOADER: failed to open iris (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open iris (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: swrast

and the window opens, but the GUI doesn't show.

Additional context

Similar to #87967, when I use LD_PRELOAD to load libstdc++ from gcc-9 instead of gcc-8 it works!

Notify maintainers

@magnetophon

Metadata

  • system: "x86_64-linux"
  • host os: Linux 5.7.15, NixOS, 20.09.git.1e3f09feaa5 (Nightingale)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.3.7
  • channels(root): "nixos-20.03pre194293.2436c27541b"
  • nixpkgs: /home/aengelen/nixpkgs
bug

Most helpful comment

there is already an upstream PR with a fix, so #95862 was easy to make.

All 9 comments

See https://github.com/NixOS/nixpkgs/issues/94315#issuecomment-673402072 (and following comments) ;)
If you enable the verbose output (https://github.com/NixOS/nixpkgs/issues/94315#issuecomment-667942575) you'll likely get something similar.
Also: Feel free to open a new issue if you find the source of this impurity (though this might be too time to find). Unfortunately we're getting a lot of those glibc impurities lately... :o

See #94315 (comment) (and following comments) ;)

Good additional input, thanks.

If you enable the verbose output (#94315 (comment)) you'll likely get something similar.

libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/aengelen/.drirc: No such file or directory.
libGL: using driver i915 for 14
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/aengelen/.drirc: No such file or directory.
libGL: using driver i915 for 14
libGL: pci id for fd 14: 8086:3e9b, driver iris
libGL: MESA-LOADER: failed to open /run/opengl-driver/lib/dri/iris_dri.so: /nix/store/gp8q4g5q5gd9rn75ghmzgykgx3wx82lz-gcc-8.4.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so)
libGL error: MESA-LOADER: failed to open iris (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: iris
libGL: using driver i915 for 14
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/aengelen/.drirc: No such file or directory.
libGL: using driver i915 for 14
libGL: pci id for fd 14: 8086:3e9b, driver iris
libGL: MESA-LOADER: failed to open /run/opengl-driver/lib/dri/iris_dri.so: /nix/store/gp8q4g5q5gd9rn75ghmzgykgx3wx82lz-gcc-8.4.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so)
libGL error: MESA-LOADER: failed to open iris (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: iris
libGL: MESA-LOADER: failed to open /run/opengl-driver/lib/dri/swrast_dri.so: /nix/store/gp8q4g5q5gd9rn75ghmzgykgx3wx82lz-gcc-8.4.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so)
libGL error: MESA-LOADER: failed to open swrast (search paths /run/opengl-driver/lib/dri)
libGL error: failed to load driver: swrast

So mainly

libGL: MESA-LOADER: failed to open /run/opengl-driver/lib/dri/iris_dri.so: /nix/store/gp8q4g5q5gd9rn75ghmzgykgx3wx82lz-gcc-8.4.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so)

Also: Feel free to open a new issue if you find the source of this impurity (though this might be too time to find). Unfortunately we're getting a lot of those glibc impurities lately... :o

Right - I don't think there's different nixpkgs revisions in play side-by-side here, but I'll try and double-check.

I cannot reproduce these.

Oh weird. I was on nixos-unstable (1e3f09feaa5667be4ed6eca96a984b4642420b83).

Ok, I had another look and this might indeed be a problem with Nixpkgs since we still build helm with GCC 8 while GCC 9 is the default:

  helm = callPackage ../applications/audio/helm {
    stdenv = gcc8Stdenv;
  };


Details

$ # Helm loads libstdc++ though GCC 8:
$ strings /nix/store/gp8q4g5q5gd9rn75ghmzgykgx3wx82lz-gcc-8.4.0-lib/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
$ # While iris would load libstdc++ from GCC 9:
$ strings /nix/store/v589pqjhvxrj73g3r0xb41yr84z5pwb7-gcc-9.3.0-lib/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

If Helm can be built with GCC 9 that should fix the crash in theory.
cc @magnetophon (maintainer)

Edit: Oh and the only dependency on GLIBCXX_3.4.26 is actually through /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so like the error says:

        /nix/store/h9k66011q5lakgl67prkknxrbx33rr38-llvm-9.0.1-lib/lib/libLLVM-9.so:
                [...]
                libstdc++.so.6 (GLIBCXX_3.4.26) => /nix/store/v589pqjhvxrj73g3r0xb41yr84z5pwb7-gcc-9.3.0-lib/lib/libstdc++.so.6

And AFAIK (#93946) /nix/store/hwqrkli3j96kfb0vjm7a3rxx7vz7ns5b-mesa-20.1.4-drivers/lib/dri/iris_dri.so should actually only load libLLVM-9.so to try to read its build ID as fallback for the shader cache invalidation.

If Helm can be built with GCC 9 that should fix the crash in theory.
cc @magnetophon (maintainer)

Not sure how I can help, since I cannot reproduce the crash.

Oops, didn't realize that you already replied before my ping. My request was basically only to try to build helm without stdenv = gcc8Stdenv; (was added in 095f2b9805552b166bdd3d84a9b066efdfdb94c7, most likely because the build was failing) if you have time (that be useful regardless of the crash). I assume that you cannot reproduce the crash because your Mesa version is either older or you don't use the Iris driver (Intel iGPUs).

@primeos That gives me:

unpacking sources
unpacking source archive /nix/store/bfa0j9rmmx9zjh9jq527pnck827gc81p-source
source root is source
patching sources
configuring
configure flags: --prefix=/nix/store/6idckxn7gilnzrzbcaj8q4cfb0w1vpci-helm-0.9.0
building
make -C builds/linux/LV2 CONFIG=Release DEBCXXFLAGS="" DEBLDFLAGS="" SIMDFLAGS="-msse2"
make[1]: Entering directory '/tmp/nix-build-helm-0.9.0.drv-0/source/builds/linux/LV2'
make -f Makefile.binary CONFIG=Release DEBCXXFLAGS="" DEBLDFLAGS=""
make[2]: Entering directory '/tmp/nix-build-helm-0.9.0.drv-0/source/builds/linux/LV2'
Compiling juce_LV2_Wrapper.cpp
In file included from ../../../JUCE/modules/juce_graphics/juce_graphics.h:111,
                 from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:57,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h: In member function 'juce::uint8& juce::PixelARGB::getAlpha()':
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:114:77: error: cannot bind packed field '((juce::PixelARGB*)this)->juce::PixelARGB::<anonymous>.juce::PixelARGB::<unnamed union>::comps[3]' to 'juce::uint8&' {aka 'unsigned char&'}
  114 |     forcedinline uint8& getAlpha() noexcept           { return comps [indexA]; }
      |                                                                ~~~~~~~~~~~~~^
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h: In member function 'juce::uint8& juce::PixelARGB::getRed()':
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:115:77: error: cannot bind packed field '((juce::PixelARGB*)this)->juce::PixelARGB::<anonymous>.juce::PixelARGB::<unnamed union>::comps[2]' to 'juce::uint8&' {aka 'unsigned char&'}
  115 |     forcedinline uint8& getRed() noexcept             { return comps [indexR]; }
      |                                                                ~~~~~~~~~~~~~^
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h: In member function 'juce::uint8& juce::PixelARGB::getGreen()':
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:116:77: error: cannot bind packed field '((juce::PixelARGB*)this)->juce::PixelARGB::<anonymous>.juce::PixelARGB::<unnamed union>::comps[1]' to 'juce::uint8&' {aka 'unsigned char&'}
  116 |     forcedinline uint8& getGreen() noexcept           { return comps [indexG]; }
      |                                                                ~~~~~~~~~~~~~^
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h: In member function 'juce::uint8& juce::PixelARGB::getBlue()':
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:117:77: error: cannot bind packed field '((juce::PixelARGB*)this)->juce::PixelARGB::<anonymous>.juce::PixelARGB::<unnamed union>::comps[0]' to 'juce::uint8&' {aka 'unsigned char&'}
  117 |     forcedinline uint8& getBlue() noexcept            { return comps [indexB]; }
      |                                                                ~~~~~~~~~~~~~^
In file included from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:181,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_gui_basics/mouse/juce_LassoComponent.h: In member function 'void juce::LassoComponent<SelectableItemType>::paint(juce::Graphics&)':
../../../JUCE/modules/juce_gui_basics/mouse/juce_LassoComponent.h:203:23: warning: invalid use of incomplete type 'class juce::LookAndFeel'
  203 |         getLookAndFeel().drawLasso (g, *this);
      |         ~~~~~~~~~~~~~~^~
In file included from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:117:7: note: forward declaration of 'class juce::LookAndFeel'
  117 | class LookAndFeel;
      |       ^~~~~~~~~~~
In file included from ../../../JUCE/modules/juce_graphics/juce_graphics.h:133,
                 from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:57,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h: In instantiation of 'void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::replaceLine(juce::PixelRGB*, juce::PixelARGB, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = true]':
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:637:17:   required from 'void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::handleEdgeTableLineFull(int, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = true]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1890:29:   required from 'void juce::RenderingHelpers::ClipRegions<SavedStateType>::RectangleListRegion::SubRectangleIterator::iterate(Renderer&) const [with Renderer = juce::RenderingHelpers::EdgeTableFillers::SolidColour<juce::PixelRGB, true>; SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1514:13:   required from 'void juce::RenderingHelpers::EdgeTableFillers::renderSolidFill(Iterator&, const juce::Image::BitmapData&, juce::PixelARGB, bool, DestPixelType*) [with Iterator = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::RectangleListRegion::SubRectangleIterator; DestPixelType = juce::PixelRGB]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:2556:67:   required from 'void juce::RenderingHelpers::SoftwareRendererSavedState::fillWithSolidColour(IteratorType&, juce::PixelARGB, bool) const [with IteratorType = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::RectangleListRegion::SubRectangleIterator]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1815:13:   required from 'void juce::RenderingHelpers::ClipRegions<SavedStateType>::RectangleListRegion::fillRectWithColour(SavedStateType&, const juce::Rectangle<int>&, juce::PixelARGB, bool) const [with SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1812:14:   required from here
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:682:34: warning: converting a packed 'juce::PixelRGB' pointer (alignment 1) to a 'int' pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member]
  682 |                             int* d = reinterpret_cast<int*> (dest);
      |                                  ^
In file included from ../../../JUCE/modules/juce_graphics/juce_graphics.h:111,
                 from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:57,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:362:17: note: defined here
  362 | class JUCE_API  PixelRGB
      |                 ^~~~~~~~
In file included from ../../../JUCE/modules/juce_graphics/juce_graphics.h:133,
                 from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:57,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h: In instantiation of 'void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::replaceLine(juce::PixelRGB*, juce::PixelARGB, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = false]':
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:637:17:   required from 'void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::handleEdgeTableLineFull(int, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = false]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1890:29:   required from 'void juce::RenderingHelpers::ClipRegions<SavedStateType>::RectangleListRegion::SubRectangleIterator::iterate(Renderer&) const [with Renderer = juce::RenderingHelpers::EdgeTableFillers::SolidColour<juce::PixelRGB, false>; SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1519:13:   required from 'void juce::RenderingHelpers::EdgeTableFillers::renderSolidFill(Iterator&, const juce::Image::BitmapData&, juce::PixelARGB, bool, DestPixelType*) [with Iterator = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::RectangleListRegion::SubRectangleIterator; DestPixelType = juce::PixelRGB]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:2556:67:   required from 'void juce::RenderingHelpers::SoftwareRendererSavedState::fillWithSolidColour(IteratorType&, juce::PixelARGB, bool) const [with IteratorType = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::RectangleListRegion::SubRectangleIterator]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1815:13:   required from 'void juce::RenderingHelpers::ClipRegions<SavedStateType>::RectangleListRegion::fillRectWithColour(SavedStateType&, const juce::Rectangle<int>&, juce::PixelARGB, bool) const [with SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]'
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:1812:14:   required from here
../../../JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h:682:34: warning: converting a packed 'juce::PixelRGB' pointer (alignment 1) to a 'int' pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member]
  682 |                             int* d = reinterpret_cast<int*> (dest);
      |                                  ^
In file included from ../../../JUCE/modules/juce_graphics/juce_graphics.h:111,
                 from ../../../JUCE/modules/juce_gui_basics/juce_gui_basics.h:57,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/../juce_audio_plugin_client.h:53,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/../utility/juce_IncludeModuleHeaders.h:29,
                 from ../../../JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp:80:
../../../JUCE/modules/juce_graphics/colour/juce_PixelFormats.h:362:17: note: defined here
  362 | class JUCE_API  PixelRGB
      |                 ^~~~~~~~
make[2]: *** [Makefile.binary:252: build/intermediate/Release/juce_LV2_Wrapper_fb90cd9c.o] Error 1
make[2]: Leaving directory '/tmp/nix-build-helm-0.9.0.drv-0/source/builds/linux/LV2'
make[1]: *** [Makefile:8: binary] Error 2
make[1]: Leaving directory '/tmp/nix-build-helm-0.9.0.drv-0/source/builds/linux/LV2'
make: *** [Makefile:83: lv2] Error 2
builder for '/nix/store/f2xdrzbmpd64g5f4fay4gd5006shara0-helm-0.9.0.drv' failed with exit code 2
error: build of '/nix/store/f2xdrzbmpd64g5f4fay4gd5006shara0-helm-0.9.0.drv' on 'ssh://nxb-4' failed: builder for '/nix/store/f2xdrzbmpd64g5f4fay4gd5006shara0-helm-0.9.0.drv' failed with exit code 2
builder for '/nix/store/f2xdrzbmpd64g5f4fay4gd5006shara0-helm-0.9.0.drv' failed with exit code 1
error: build of '/nix/store/f2xdrzbmpd64g5f4fay4gd5006shara0-helm-0.9.0.drv' failed

there is already an upstream PR with a fix, so #95862 was easy to make.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

tomberek picture tomberek  路  3Comments

copumpkin picture copumpkin  路  3Comments

ghost picture ghost  路  3Comments

grahamc picture grahamc  路  3Comments

teto picture teto  路  3Comments