Segmentation fault is caused by 'No appropriate framebuffer config found!'

Showing 1-3 of 3 messages
Segmentation fault is caused by 'No appropriate framebuffer config found!' Deokjin Kim 10/31/13 12:27 AM

Dear all,

 

When I executed servo, I met segmentation fault. It's caused by 'No appropriate framebuffer config found!'.

Below is my test result.

0. Test environment

- git hash : 1a7e9e5e2c02d9e023c901f14a8b54e9a3c6a8a2

 

1. Execute servo without "-c" option

# ./servo ../src/test/html/about-mozilla.html

task '<unnamed>' failed at 'No appropriate framebuffer config found!', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/support/layers/rust-layers/platform/linux/surface.rs:143
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627

 

2. Execute servo with "-c" option

# ./servo -c  ../src/test/html/about-mozilla.html

task '<unnamed>' failed at 'No appropriate framebuffer config found!', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/support/layers/rust-layers/platform/linux/surface.rs:143
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'killed by linked failure', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/kill.rs:627
task '<unnamed>' failed at 'receiving on closed channel', /home/deokjin81kim/Share/2013_parallel_browser/temp/servo/src/compiler/rust/src/libstd/rt/comm.rs:498

 

3. Result of "lspci" command

# lspci

00:00.0 Host bridge: Intel Corporation Core Processor DMI (rev 11)
00:03.0 PCI bridge: Intel Corporation Core Processor PCI Express Root Port 1 (rev 11)
00:08.0 System peripheral: Intel Corporation Core Processor System Management Registers (rev 11)
00:08.1 System peripheral: Intel Corporation Core Processor Semaphore and Scratchpad Registers (rev 11)
00:08.2 System peripheral: Intel Corporation Core Processor System Control and Status Registers (rev 11)
00:08.3 System peripheral: Intel Corporation Core Processor Miscellaneous Registers (rev 11)
00:10.0 System peripheral: Intel Corporation Core Processor QPI Link (rev 11)
00:10.1 System peripheral: Intel Corporation Core Processor QPI Routing and Protocol Registers (rev 11)
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 06)
00:1c.5 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 6 (rev 06)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation 5 Series Chipset LPC Interface Controller (rev 06)
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GT216 [GeForce GT 220] (rev a2)
01:00.1 Audio device: NVIDIA Corporation High Definition Audio Controller (rev a1)
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

 

Thank you in advance.

 

Best Regards,

Deokjin Kim

Re: Segmentation fault is caused by 'No appropriate framebuffer config found!' Patrick Walton 10/31/13 8:37 AM
On 10/31/13 12:27 AM, Deokjin Kim wrote:
> Dear all,
>
> When I executed servo, I met segmentation fault. It's caused by 'No
> appropriate framebuffer config found!'.

We've seen problems with some GPU drivers on Linux not being able to
handle binding X pixmaps to RGBA textures. I assumed that in 2013
everyone would support this seemingly basic feature but that does not
seem to be the case :(

I see three options:

1. EGLStream. Maybe that will work on those GPUs.

2. Investigate if there's some way to hack around it (using RGB pixmaps
but somehow storing and reconstructing the alpha channel maybe?)

3. Shared memory with texture upload on the compositor side.

#3 is guaranteed to work, but has bad performance implications (though
no worse than the browsers of today).

For now we can back off to RGB textures on those GPUs. This obviously
won't work in the long run, though.

Patrick

Re: Segmentation fault is caused by 'No appropriate framebuffer config found!' Keegan McAllister 10/31/13 12:05 PM
> 2. Investigate if there's some way to hack around it (using RGB pixmaps
> but somehow storing and reconstructing the alpha channel maybe?)

This sounds pretty workable to me.  We can send alpha as the R channel of a second pixmap/texture and the compositor can extract it within a fragment shader.

> 3. Shared memory with texture upload on the compositor side.
>
> #3 is guaranteed to work, but has bad performance implications (though
> no worse than the browsers of today).

If we're rendering on the CPU anyway, what's the performance hit of compositor upload?  Is the issue that we'd like to upload in parallel with compositor work (and thus avoid jank)?

I'm one of the people who can't use RGBA pixmaps, on Linux with NVIDIA binary drivers (which I naively thought were feature-complete).  When I switch to RGB pixmaps (patching rust-layers thus: https://gist.github.com/kmcallister/7206061), I can run servo with CPU rendering (./servo -c) but with GPU rendering I get

    X Error of failed request:  BadAlloc (insufficient resources for operation)
      Major opcode of failed request:  135 (GLX)
      Minor opcode of failed request:  22 (X_GLXCreatePixmap)
      Serial number of failed request:  141
      Current serial number in output stream:  142

I'm not sure why this is happening but I didn't have much time to dig into it yet.

keegan