NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.45k stars 13.65k forks source link

kdenlive crashes on startup #10857

Closed martinvahi closed 8 years ago

martinvahi commented 8 years ago

The summary is:

QFSFileEngine::open: No file name specified
cannot find .rc file "kdenliveui.rc" for component "kdenlive"
Segmentation fault

The whole console dump:

ts2@linux-0fiz:~/tmp$ kdenlive
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
kf5.kxmlgui: Registering action  "edit_select_all"  under new name  "select_all_tracks"
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
QCoreApplication::postEvent: Unexpected null receiver

---
formats:
  - a64
  - ac3
  - adts
  - adx
  - aiff
  - amr
  - apng
  - asf
  - ass
  - ast
  - asf_stream
  - au
  - avi
  - avm2
  - bit
  - caf
  - cavsvideo
  - crc
  - dash
  - data
  - daud
  - dirac
  - dnxhd
  - dts
  - dv
  - eac3
  - f4v
  - ffm
  - ffmetadata
  - filmstrip
  - flac
  - flv
  - framecrc
  - framemd5
  - g722
  - g723_1
  - gif
  - gxf
  - h261
  - h263
  - h264
  - hds
  - hevc
  - hls
  - ico
  - ilbc
  - image2
  - image2pipe
  - ipod
  - ircam
  - ismv
  - ivf
  - jacosub
  - latm
  - lrc
  - m4v
  - md5
  - matroska
  - matroska
  - microdvd
  - mjpeg
  - mlp
  - mmf
  - mov
  - mp2
  - mp3
  - mp4
  - mpeg
  - vcd
  - mpeg1video
  - dvd
  - svcd
  - mpeg2video
  - vob
  - mpegts
  - mpjpeg
  - mxf
  - mxf_d10
  - mxf_opatom
  - null
  - nut
  - oga
  - ogg
  - oma
  - opus
  - alaw
  - mulaw
  - f64be
  - f64le
  - f32be
  - f32le
  - s32be
  - s32le
  - s24be
  - s24le
  - s16be
  - s16le
  - s8
  - u32be
  - u32le
  - u24be
  - u24le
  - u16be
  - u16le
  - u8
  - psp
  - rawvideo
  - rm
  - roq
  - rso
  - rtp
  - rtp_mpegts
  - rtsp
  - sap
  - segment
  - stream_segment,ssegment
  - singlejpeg
  - smjpeg
  - smoothstreaming
  - sox
  - spx
  - spdif
  - srt
  - swf
  - tee
  - 3g2
  - 3gp
  - mkvtimestamp_v2
  - truehd
  - uncodedframecrc
  - vc1
  - vc1test
  - voc
  - w64
  - wav
  - webm
  - webm_dash_manifest
  - webm_chunk
  - webp
  - webvtt
  - wtv
  - wv
  - yuv4mpegpipe
  - alsa
  - fbdev
  - oss
  - pulse
  - sdl
  - v4l2
...

---
audio_codecs:
  - comfortnoise
  - s302m
  - aac
  - ac3
  - ac3_fixed
  - alac
  - dca
  - eac3
  - flac
  - g723_1
  - mp2
  - mp2fixed
  - nellymoser
  - real_144
  - sonic
  - sonicls
  - tta
  - vorbis
  - wavpack
  - wmav1
  - wmav2
  - pcm_alaw
  - pcm_f32be
  - pcm_f32le
  - pcm_f64be
  - pcm_f64le
  - pcm_mulaw
  - pcm_s8
  - pcm_s8_planar
  - pcm_s16be
  - pcm_s16be_planar
  - pcm_s16le
  - pcm_s16le_planar
  - pcm_s24be
  - pcm_s24daud
  - pcm_s24le
  - pcm_s24le_planar
  - pcm_s32be
  - pcm_s32le
  - pcm_s32le_planar
  - pcm_u8
  - pcm_u16be
  - pcm_u16le
  - pcm_u24be
  - pcm_u24le
  - pcm_u32be
  - pcm_u32le
  - roq_dpcm
  - adpcm_adx
  - g722
  - g726
  - adpcm_ima_qt
  - adpcm_ima_wav
  - adpcm_ms
  - adpcm_swf
  - adpcm_yamaha
  - libmp3lame
  - libvorbis
...

---
video_codecs:
  - a64multi
  - a64multi5
  - alias_pix
  - amv
  - apng
  - asv1
  - asv2
  - avrp
  - avui
  - ayuv
  - bmp
  - cinepak
  - cljr
  - dnxhd
  - dpx
  - dvvideo
  - ffv1
  - ffvhuff
  - flashsv
  - flashsv2
  - flv
  - gif
  - h261
  - h263
  - h263p
  - huffyuv
  - jpeg2000
  - jpegls
  - ljpeg
  - mjpeg
  - mpeg1video
  - mpeg2video
  - mpeg4
  - msmpeg4v2
  - msmpeg4
  - msvideo1
  - pam
  - pbm
  - pcx
  - pgm
  - pgmyuv
  - png
  - ppm
  - prores
  - prores_aw
  - prores_ks
  - qtrle
  - r10k
  - r210
  - rawvideo
  - roqvideo
  - rv10
  - rv20
  - sgi
  - snow
  - sunrast
  - svq1
  - targa
  - tiff
  - utvideo
  - v210
  - v308
  - v408
  - v410
  - wmv1
  - wmv2
  - xbm
  - xface
  - xwd
  - y41p
  - yuv4
  - zlib
  - zmbv
  - libtheora
  - libvpx
  - libvpx-vp9
  - libx264
  - libx264rgb
  - libxvid
...
QFSFileEngine::open: No file name specified
cannot find .rc file "kdenliveui.rc" for component "kdenlive"
Segmentation fault
ts2@linux-0fiz:~/tmp$ which kdenlive
/home/ts2/.nix-profile/bin/kdenlive
ts2@linux-0fiz:~/tmp$ uname -a
Linux linux-0fiz 3.16.7-29-desktop #1 SMP PREEMPT Fri Oct 23 00:46:04 UTC 2015 (6be6a97) x86_64 x86_64 x86_64 GNU/Linux
ts2@linux-0fiz:~/tmp$ which nix-env
/home/ts2/inst/nix/bin/nix-env
ts2@linux-0fiz:~/tmp$
vcunat commented 8 years ago

It seems like the problem of not finding OS libGL on non-NixOS. See e.g. #9415.

davidak commented 8 years ago

@martinvahi have you solved it with the workaround in the linked issue?

i have the same issue on elementary OS Freya (based on Ubuntu 14.04 LTS).

i copied the systems libGL.so and patched it, but no difference. openarena works that way.

# apt-get install libgl1-mesa-dev
$ cp /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 ~/.nix_libs/
$ patchelf --set-rpath /lib:/usr/lib:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu ~/.nix_libs/libGL.so.1.2.0
$ LD_LIBRARY_PATH=~/.nix_libs kdenlive
...
QFSFileEngine::open: No file name specified
ui/ui_standards.rc not found in ("/home/davidak/.config", "/etc/xdg/xdg-pantheon", "/etc/xdg")
cannot find .rc file "kdenliveui.rc" for component "kdenlive"
Segmentation fault (Speicherabzug geschrieben)

$ LD_LIBRARY_PATH=~/.nix_libs strace kdenlive 2>&1 | less -S
...
stat("/usr/share/icons/hicolor/scalable/stock/object/kde.png", 0x7fff408d9460) = -1 ENOENT (No such file or directory)
stat("/usr/share/icons/hicolor/scalable/stock/table/kde.png", 0x7fff408d9460) = -1 ENOENT (No such file or directory)
stat("/usr/share/icons/hicolor/scalable/stock/text/kde.png", 0x7fff408d9460) = -1 ENOENT (No such file or directory)
stat("/home/davidak/.config/ui/ui_standards.rc", 0x7fff408d97e0) = -1 ENOENT (No such file or directory)
stat("/etc/xdg/xdg-pantheon/ui/ui_standards.rc", 0x7fff408d97e0) = -1 ENOENT (No such file or directory)
stat("/etc/xdg/ui/ui_standards.rc", 0x7fff408d97e0) = -1 ENOENT (No such file or directory)
write(2, "ui/ui_standards.rc not found in "..., 95ui/ui_standards.rc not found in ("/home/davidak/.config", "/etc/xdg/xdg-pantheon", "/etc/xdg")
) = 95
stat("/home/davidak/.local/share/kxmlgui5/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/pantheon/kxmlgui5/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/local/share/kxmlgui5/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/kxmlgui5/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/home/davidak/.local/share/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/pantheon/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/local/share/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/home/davidak/.local/share/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/pantheon/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/local/share/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
stat("/usr/share/kdenlive/kdenliveui.rc", 0x7fff408d9760) = -1 ENOENT (No such file or directory)
write(2, "cannot find .rc file \"kdenliveui"..., 62cannot find .rc file "kdenliveui.rc" for component "kdenlive"
) = 62
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\4\0\2\0\340\0\340\2\4\0\2\0\335\0\340\2", 16}], 1) = 16
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN|POLLOUT}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\34\0\367\10\335\0\340\2\312\1\0\0\212\21M\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 544
futex(0x14f45c4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x14f45c0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
writev(3, [{"N\0\4\0\337\0\340\2\6\0\340\2\17\2\0\0\1\30\v\0\343\0\340\2\6\0\340\2\0\0\0\0"..., 60}, {NULL, 0}, {"", 0}], 3) = 60
futex(0x14f4598, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\2\0\7\0\343\0\340\2\1\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\177\240b\0\22\0\30\0"..., 400}], 1) = 400
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN|POLLOUT}])
writev(3, [{"\203.\7\0\343\0\340\2\2\0\340\2\10\0\1\0`\0\0\0\4\0\1\0`\0\0\0\203.\5\0"..., 48}, {NULL, 0}, {"", 0}], 3) = 48
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN|POLLOUT}])
writev(3, [{"\2\0\5\0\343\0\340\2\0\n\0\0\0\0\0\0\177\240b\0\22\0\7\0\343\0\340\2F\1\0\0"..., 116}], 1) = 116
futex(0x14f4598, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7fff408d9074, FUTEX_WAIT_PRIVATE, 1, NULL) = 0
futex(0x14f4598, FUTEX_WAKE_PRIVATE, 1) = 0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\22\0\17\0\343\0\340\2#\0\0\0#\0\0\0 \0\0\0\t\0\0\0\3\0\0\0\1\0\0\0"..., 92}], 1) = 92
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"+.\1\0", 4}, {NULL, 0}, {"", 0}], 3) = 4
futex(0x14f45c4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x14f45c0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x14f4598, FUTEX_WAKE_PRIVATE, 1) = 1
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
getcwd("/home/davidak", 4098)           = 14
getcwd("/home/davidak", 4098)           = 14
getcwd("/home/davidak", 4098)           = 14
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\22\0\7\0\343\0\340\2l\1\0\0\4\0\0\0 \0\0\0\1\0\0\0\5\0\0\0\22\0\30\0"..., 240}], 1) = 240
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x8} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (Speicherabzug geschrieben)
martinvahi commented 8 years ago

Thank You for the answer, but as of 2015_12_07 my conclusion with the Nix package manager and with anything that depends on the Nix and many other package managers and package collections is that different people have very different working styles and very different wishes and personal demands to the tools that they use and some people tolerate a situation, where their tools work only in some, exceptional cases, more than others. By nature I'm a kind of guy, who will literally loose gray cells, when my tools work only on some exceptional cases. For example, when Windows had its heyday and the "blue screen of death" could come at any moment, when I was editing a document and haven't pumped the Ctrl-S yet, I felt really uncomfortable. I do not yell or slam keyboards or anything like that, but unreliable tools that just break at any moment when I need them to work DISTURB ME EXTREMELY. Yet, I have noticed that that is not the case with most other people around me. I hear the expression, "it is OK, if the software works ONLY in circumstances X,Y,W", if not all the time, then certainly too often for my taste.

Now, if You are wondering, whether I realize that GitHub bug reporting systems are not the place, where people prefer to read philosophy, then my answer is that before choosing a technical solution one has to answer the question WHY to WANT requirements R1,R2,..,Rn. There is a REASON, why we write software in stead of doing drugs or just spending all our days fishing or hunting. (Fishing and hunting as activities are OK and fisherman profession is a noble profession, but as hobbies too much of them might not be the right choice, specially if the amount of caught fish or game is not enough to feed other people.) My religious belief about engineering disciplines contains the idea that what I spend the most valuable hours of my life on, must be reliable and serve its end-users and save the end-users from harm as much as possible. Think of ergonomics. What's the point of spending a lot of effort on curing various injuries, when the injuries could be prevented by proper engineering at the first stage? Titanic and its evacuation planning, anyone?

I see gaming as a form of learning, even for the first-person-shooters, because actually it is partly possible to use the same strategies there that are used in Chess, but when there is not even that type of gaming involved, where users have a lot of choices, then those 2 hours that the end user spends on crappy software might be extremely valuable for doing something that the person might regret not doing at its death bed. Engineering is financially feasible only, if every engineer serves a lot of end users. If the life-hours that are lost by multiple end users due to shoddy engineering are summed up, then it might turn out that a murderer destroys less life-hours than some well respected engineer. There is the argument that engineers have also their limits, just like doctors, who have a morgue ready at every hospital, but there is a difference between sloppy-ness and lack of capabilities and as of 2015_12 I'm deeply convinced that most of the sloppy-ness can be evaluated ONLY by the engineer himself, not anybody else. People, who are not skilled at a discipline, like business people versus IT, do not have any chance to evaluate anything at all, except that they have a fine opportunity to make a fool of themselves. Therefore, the responsibility of saving the life-hours of other people relies MOSTLY on every engineer themselves.

So, that's part of the standards that, I'm not saying that I am able to live by, but I'm certainly saying that I PURSUE. To create robust solutions for others, I must use robust components in my solutions, which sets limits to what I can use and what I can not use.

What regards to package management systems and package collections, then as of 2015_12 it seems to me that there are no good solutions. It seems to me that the most promising operating system is the Gnode OS and what regards to package collections then I came to a conclusion that I must create my own software so that every component always references its dependencies by a specific version, id est, NEVER reference something by

<my nice dependency folklore name>_newest

but always reference by

<my nice dependency folklore name>_concrete_version_foo

If different versions of the same component must be used in a single application, then the application must consist of multiple operating system processes, different processes load different versions of the common component. In case of team-work in no event does one developer edit the code of the other, but different developers run their creations in different operating system processes, unless the owner of the code really trusts the other persons knowledge, working style, intentions. Given the fact that nobody is able to learn everything, it is necessary to use software components that have been written by domain experts. For example, astrophysicists like Fortran, statistics experts like R, some operating system experts might like Ada, so on and so forth. So, I think that I'll stick with my previous, 2, ideas that I described at my blog:

As of 2015_12 I do not have the full infrastructure for actually using those ideas, but at least I have an answer about what to pursue, what will ultimately work.

Thank You for reading this long, philosophical, text and I hope that I did not waste Your life-minutes with it. :-)

vcunat commented 8 years ago

Well, so far nixpkgs seems mainly maintained for NixOS, with Darwin coming the second. Other ways of using seem rather under-maintained, though some rather similar ones do work to some extent (such as many Linux distros). Honestly, people typically don't like to expend lots of energy towards fixing configurations that they don't (want to) use.

BTW, I think I have heard of Genode around nixos.org already.

martinvahi commented 8 years ago

Thank You for the answer. If the Nix package manager is currently de facto NixOS specific with a design goal of being NixOS independent, then I propose that the advertisement of the Nix package manager is corrected to state that in its current design phase the Nix works only on NixOS, but there exists a goal to make it work everywhere and some bold lonely wolves can risk and try Nix on other distributions to find out, where the developers of Nix have accidentally diverted from producing a portable product.

vcunat commented 8 years ago

Nix by itself works fine. It's the individual packages that can be problematic. The nixpkgs intro could explain the state in more detail, I guess.

davidak commented 8 years ago

On GNU/Linux, the packages in Nixpkgs are ‘pure’, meaning that they have no dependencies on packages outside of the Nix store.

That seams to be false then. At least with the linked issue.

But we have to debug this. I made that strace but don't see a useful hint.

I would really like to use a current version of Kdenlive on elementary OS with the nice Pantheon Desktop.

vcunat commented 8 years ago

On GNU/Linux, the packages in Nixpkgs are ‘pure’, meaning that they have no dependencies on packages outside of the Nix store.

That seams to be false then. At least with the linked issue.

Nothing's perfect, and note that completely pure stuff has no effect on the real world ;-) (So Haskell e.g. takes the "state of the world" as an "input" to the function.) Nixpkgs on Linux is certainly far purer than anything I've heard of.