musicplayerdaemon / ncmpc Goto Github PK
View Code? Open in Web Editor NEWcurses client for MPD
License: GNU General Public License v2.0
curses client for MPD
License: GNU General Public License v2.0
mpd already uses the directory - same order of directories to look for config file could be used for ncmpc as well. From man mpd.conf:
mpd.conf is the configuration file for mpd(1). If not specified on the command
line, MPD first searches for it at $XDG_CONFIG_HOME/mpd/mpd.conf then at
~/.mpdconf then at ~/.mpd/mpd.conf and then in /etc/mpd.conf.
When browsing my library (Artist List), the very first one is <empty>
, so when I open that view, the user interface get stuck and I get the constant output in the status bar saying that the connection with the daemon has timed out.
I'm using mopidy as a daemon, and when this even happens, it spikes to 100% cpu, and get stuck there until I restart it or close ncmpc. Here is an interesting entry in the mopidy log
WARNING A client or frontend made a library search with an empty query. This is strongly discouraged. Please check what sent this query and file a bug.
About my setup:
System: debian 9.2 kernel 4.9.0-6-amd64
ncmpcpp: 0.7.4
optional screens compiled-in:
- tag editor
- tiny tag editor
- artist info
- outputs
- visualizer
- clock
Let me know if you need any additional information
I've taken a look at what's going on with gdb:
id = c->playlist.FindUri(*song);
in enqueue_and_play() is set as 3 on 0.30, while it's 4625 on 0.29 for a playlist with 4415 songs for the same song on the same mpd instance.
So, ncmpc-0.30 gets error 50 = MPD_SERVER_ERROR_NO_EXIST (song URI is valid).
If I set id=4625 with gdb before a call to mpd_run_play_id(), then it plays fine on 0.30.
I don't know how id's are generated internally, and going deeper will require me getting familiar with libmpdclient/mpd codebase. And that's going to take too much time, so I've given up for now.
If a .flac
file is playing that has both TRACK
and TRACKNUMBER
fields, mpc
and ncmpc
differ in the value of %track%
:
mpc status --format "%track%"
10
...
If I start ncmpc
with a config of
list-format = "%track%"
it will display 10, 10
in the main window (for track 10, of course).
Please consider including the performer tag in the song-viewer tab.
The new release ncmpc-0.31 segfaults when pressing l
(view the selected and the currently playing song) on an empty playlist; its last words are:
ncmpc: ../src/Queue.cxx:69: MpdQueue::size_type MpdQueue::FindByReference(const mpd_song&) const: Assertion `i < size()' failed.
Here is the backtrace:
#0 0x00007ffff7e1bd7f in raise () from /usr/lib/libc.so.6
#1 0x00007ffff7e06672 in abort () from /usr/lib/libc.so.6
#2 0x00007ffff7e06548 in __assert_fail_base.cold.0 () from /usr/lib/libc.so.6
#3 0x00007ffff7e14396 in __assert_fail () from /usr/lib/libc.so.6
#4 0x000055555557945d in QueuePage::OnCommand(mpdclient&, Command) ()
#5 0x000055555557ebf1 in ScreenManager::OnCommand(mpdclient&, Command) ()
#6 0x000055555557f45d in keyboard_event(_GIOChannel*, GIOCondition, void*) ()
#7 0x00007ffff7d2d271 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#8 0x00007ffff7d2ef89 in ?? () from /usr/lib/libglib-2.0.so.0
#9 0x00007ffff7d2ff62 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#10 0x000055555556004f in main ()
The previous ncmpc-0.30 did not have this issue. Cheers.
I'm unable to build ncmpc. What gives?
Software | Version |
---|---|
ncmpc | 93dcece |
Meson | 0.49.0 |
Ninja | 1.9.0 |
Boost | 1.70.0 |
ninja: Entering directory `output'
[63/71] Compiling C++ object 'ncmpc@exe/src_TagListPage.cxx.o'.
FAILED: ncmpc@exe/src_TagListPage.cxx.o
ccache c++ -Incmpc@exe -I. -I.. -I../src -I../ -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -g -D_GNU_SOURCE -DBOOST_NO_IOSTREAM -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -Wall -Wextra -Wno-deprecated-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -Wundef -Wno-non-virtual-dtor -fvisibility=hidden -pthread -MD -MQ 'ncmpc@exe/src_TagListPage.cxx.o' -MF 'ncmpc@exe/src_TagListPage.cxx.o.d' -o 'ncmpc@exe/src_TagListPage.cxx.o' -c ../src/TagListPage.cxx
../src/TagListPage.cxx: In member function ‘TagFilter TagListPage::MakeCursorFilter() const’:
../src/TagListPage.cxx:41:12: error: converting to ‘TagFilter {aka std::forward_list<std::pair<mpd_tag_type, std::basic_string<char> > >}’ from initializer list would use explicit constructor ‘std::forward_list<_Tp, _Alloc>::forward_list(const _Alloc&) [with _Tp = std::pair<mpd_tag_type, std::basic_string<char> >; _Alloc = std::allocator<std::pair<mpd_tag_type, std::basic_string<char> > >]’
return {};
^
[68/71] Compiling C++ object 'ncmpc@exe/src_screen_keydef.cxx.o'.
ninja: build stopped: subcommand failed.
ncmpc: ../src/hscroll.cxx:69: void hscroll::Paint() const: Assertion `basic.IsDefined()' failed.
I can reliably get nmcpc to crash this way. I have a playlist containing two internet radio streams, which I load with mpc and start playing. Then ncmpd is started. Then, after about 1 second of playing the first stream, I down-arrow and Enter to switch to the other one, and it immediately crashes.
I guess this has to do with the ticker tape scrolling at the bottom of the screen. The first stream's url is displayed there at first, and is long enough it has to scroll. The second stream's url is shorter and does not need to scroll.
Versions: Both 0.33 and 0.35 have the problem.
In 0.27, using lyrics search immediately exits the program:
ncmpc: src/plugin.c:174: plugin_data: Assertion `cycle->pid > 0' failed. Aborted
I checked 0.24 and 0.25, and those do not have this problem - lyrics search works just as expected.
The GNU autotools based build system had a --with-lyrics-plugin-dir
configuration flag, here is the description from ncmpc-0.27:
--with-lyrics-plugin-dir=DIRECTORY
Directory where lyrics plugins are stored
[default=PREFIX/lib/ncmpc/lyrics]
With the meson based build system this directory path is created by concatenating the prefix and libdir options in meson.build
with the project name and the string lyrics
:
join_paths(get_option('prefix'), get_option('libdir'), meson.project_name(), 'lyrics')
It seems to be no longer possible to specify a different path using configuration options. Could you add an option to meson_bulid.txt
allowing the configuration of that directory path?
I even started working on a patch for this and came up with the following:
diff --git a/meson_options.txt b/meson_options.txt
index 4f58ed3..d8e1023 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -79,3 +79,7 @@ option('chat_screen', type: 'boolean',
option('documentation', type: 'boolean',
value: false,
description: 'Build API documentation')
+
+option('lyrics_plugin_dir', type: 'string',
+ value: join_paths(get_option('libdir'), meson.project_name(), 'lyrics'),
+ description: 'Directory where lyrics plugins are stored')
Sadly this patch doesn't work because you can't seem to call functions in meson_build.txt
thus you probably need to hardcode the path in that file.
Currently, there's no good way to quickly say: "play this song three times". You can either toggle repeat and single modes and deactivate them later, or go back to the Browse screen to append the song again, and put it after the currently playing row. This is a hassle if the song is in the middle of the playlist. It would be nice to be able to duplicate the currently playing song.
Relatedly, it would be nice to be able to append a song right after the currently song, and leave the rest of the playlist untouched.
From a cursory look, possible default keybindings could be D and A (or disabled).
Summary:
If you think these would be nice to have but are not willing to implement them, I can try to come up with a PR (eventually).
I am using the following ncmpc version:
$ ncmpc --version
ncmpc version: 0.29
build options: debug multibyte wide locale nls colors getmouse artist-screen help-screen search-screen song-screen key-screen lyrics-screen outputs-screen
configuration files:
/home/nmeum/.ncmpc/config
/etc/ncmpc/config
When entering a search string in the Search:
input bar (which can be reached by pressing 5
twice) which contains non-ASCII character (e.g the german umlaut 'ö'), pressing Ctrl + W
triggers an assertion and causes the program to crash.
Here is the output of the assert(3)
call:
Search: fööAssertion failed: x < strlen(wr->line) (../src/wreadln.c: wreadln_delete_char: 355)
Aborted
I can reproduce this crash on both Alpine Linux Edge and Arch Linux.
It would be nice to be able to access to recently modified tracks (ie. recent music library additions|modifications).
I'm not sure where to add this, may be a new search mode, for instance an advanced search mode:
modified:<duration>(m|h|d|m|y)
duration
as an integer with a time unit prefix minute,hour,day,etc…
Possibly have the same view for Albums|Artists.
The Meson build system
Version: 0.47.1
Source dir: /data/src/ncmpc
Build dir: /data/src/ncmpc/output
Build type: native build
Project name: ncmpc
Project version: 0.31
Native C++ compiler: c++ (gcc 8.2.0 "c++ (Debian 8.2.0-4) 8.2.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Has header "locale.h": YES
Has header "libintl.h": YES
Checking for function "getaddrinfo" : YES
Found pkg-config: /usr/bin/pkg-config (0.29)
Native dependency ncursesw found: YES 6.1.20180714
Has header "ncursesw/curses.h": YES
Checking for function "getmouse" : YES
Dependency lirc found: NO
Dependency liblircclient0 found: NO
Compiler for C++ supports arguments -Wall: YES
Compiler for C++ supports arguments -Wextra: YES
Compiler for C++ supports arguments -Wno-deprecated-declarations -Wdeprecated-declarations: YES
Compiler for C++ supports arguments -Wshadow: YES
Compiler for C++ supports arguments -Wpointer-arith: YES
Compiler for C++ supports arguments -Wcast-qual: YES
Compiler for C++ supports arguments -Wcast-align: YES
Compiler for C++ supports arguments -Wwrite-strings: YES
Compiler for C++ supports arguments -Wmissing-declarations: YES
Compiler for C++ supports arguments -Wmissing-noreturn: YES
Compiler for C++ supports arguments -Wmissing-format-attribute: YES
Compiler for C++ supports arguments -Wredundant-decls: YES
Compiler for C++ supports arguments -Wundef: YES
Compiler for C++ supports arguments -Wno-non-virtual-dtor -Wnon-virtual-dtor: YES
Compiler for C++ supports arguments -fvisibility=hidden: YES
Compiler for C++ supports arguments -fno-exceptions: YES
Compiler for C++ supports arguments -fno-rtti: YES
Native dependency glib-2.0 found: YES 2.56.1
Native dependency libmpdclient found: YES 2.15
Configuring config.h using configuration
Program sphinx-build found: YES (/usr/bin/sphinx-build)
Build targets in project: 7
Found ninja-1.8.2 at /usr/bin/ninja
(...)
[14/62] Compiling C++ object 'ncmpc@exe/src_StatusBar.cxx.o'.
../src/StatusBar.cxx: In member function ‘void StatusBar::Update(const mpd_status*, const mpd_song*)’:
../src/StatusBar.cxx:151:6: warning: ‘%s’ directive output may be truncated writing up to 31 bytes into a region of size between 15 and 61 [-Wformat-truncation=]
"%s [%s/%s]",
^~~~~~~~~~~~
bitrate, elapsed_string, duration_string);
~~~~~~~~~~~~~~~
../src/StatusBar.cxx:150:12: note: ‘snprintf’ output between 5 and 82 bytes into a destination of size 64
snprintf(right_text, sizeof(right_text),
~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"%s [%s/%s]",
~~~~~~~~~~~~~
bitrate, elapsed_string, duration_string);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[61/62] Generating Manpage documentation with a custom command.
/data/src/ncmpc/doc/index.rst:211: WARNING: Inline interpreted text or phrase reference start-string without end-string.
[62/62] Generating HTML documentation with a custom command.
/data/src/ncmpc/doc/index.rst:211: WARNING: Inline interpreted text or phrase reference start-string without end-string.
WARNING: html_static_path entry u'/data/src/ncmpc/doc/_static' does not exist
Hi.
'
character.0x27
Key l assigned to select-playing and down
warning.screen-prev
/screen-next
change only between 2: Queue
and 3: Browse
.# .config/ncmpc/config
enable-mouse = yes
# .config/ncmpc/keys
key down = 'l'
key play = ';'
key go-parent-directory = 'j'
key screen-prev = 'J'
#key screen-next = '\'' DOES NOT WORK
key screen-next = 0x27
It is a little annoying to see this message every time ncmpc exits under sh.
Bash does not show this.
color title
and color title-bold
refer to (i.e., the former refers to the right-hand volume display and screen list names, and the latter the left-hand title)
color title
and the name prefixes use color title-bold? This seems randomly inconsistent to me. I'd recommend a setting for the screen list information and title, and a separate for the volume indicatorWhen running ncmpc and suspending my laptop ncmpc (sometimes) crashes as soon as my laptop wakes up from sleep again. The following output shows up on stdout in that case:
Assertion failed: c->source != NULL (../src/mpdclient.c: mpdclient_schedule_enter_idle: 52)
Aborted
macOS does not have an ncurses.pc pkg-config file, so I'm getting build failure with 0.28.
[53/55] Linking target test/run_hscroll.
FAILED: test/run_hscroll
clang -o test/run_hscroll 'test/run_hscroll@exe/run_hscroll.c.o' 'ncmpc@exe/src_hscroll.c.o' 'ncmpc@exe/src_charset.c.o' -L/usr/local/Cellar/glib/2.54.0/lib -L/usr/local/opt/gettext/lib -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation
Undefined symbols for architecture x86_64:
"_waddnstr", referenced from:
_hscroll_draw in src_hscroll.c.o
"_wattr_get", referenced from:
_fix_wattr_get in src_hscroll.c.o
"_wattr_set", referenced from:
_hscroll_draw in src_hscroll.c.o
"_wmove", referenced from:
_hscroll_draw in src_hscroll.c.o
"_wrefresh", referenced from:
_hscroll_timer_callback in src_hscroll.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[54/55] Linking target ncmpc.
FAILED: ncmpc
clang -o ncmpc 'ncmpc@exe/src_main.c.o' 'ncmpc@exe/src_gidle.c.o' 'ncmpc@exe/src_mpdclient.c.o' 'ncmpc@exe/src_callbacks.c.o' 'ncmpc@exe/src_playlist.c.o' 'ncmpc@exe/src_filelist.c.o' 'ncmpc@exe/src_options.c.o' 'ncmpc@exe/src_command.c.o' 'ncmpc@exe/src_keyboard.c.o' 'ncmpc@exe/src_ncu.c.o' 'ncmpc@exe/src_player_command.c.o' 'ncmpc@exe/src_title_bar.c.o' 'ncmpc@exe/src_progress_bar.c.o' 'ncmpc@exe/src_status_bar.c.o' 'ncmpc@exe/src_screen.c.o' 'ncmpc@exe/src_screen_init.c.o' 'ncmpc@exe/src_screen_paint.c.o' 'ncmpc@exe/src_screen_utils.c.o' 'ncmpc@exe/src_screen_status.c.o' 'ncmpc@exe/src_screen_list.c.o' 'ncmpc@exe/src_screen_find.c.o' 'ncmpc@exe/src_screen_client.c.o' 'ncmpc@exe/src_screen_queue.c.o' 'ncmpc@exe/src_screen_browser.c.o' 'ncmpc@exe/src_screen_file.c.o' 'ncmpc@exe/src_list_window.c.o' 'ncmpc@exe/src_save_playlist.c.o' 'ncmpc@exe/src_song_paint.c.o' 'ncmpc@exe/src_colors.c.o' 'ncmpc@exe/src_charset.c.o' 'ncmpc@exe/src_wreadln.c.o' 'ncmpc@exe/src_strfsong.c.o' 'ncmpc@exe/src_time_format.c.o' 'ncmpc@exe/src_utils.c.o' 'ncmpc@exe/src_signals.c.o' 'ncmpc@exe/src_db_completion.c.o' 'ncmpc@exe/src_xterm_title.c.o' 'ncmpc@exe/src_hscroll.c.o' 'ncmpc@exe/src_match.c.o' 'ncmpc@exe/src_conf.c.o' 'ncmpc@exe/src_net_socket.c.o' 'ncmpc@exe/src_net_resolver.c.o' 'ncmpc@exe/src_net_async_connect.c.o' 'ncmpc@exe/src_net_async_rconnect.c.o' 'ncmpc@exe/src_aconnect.c.o' 'ncmpc@exe/src_screen_help.c.o' 'ncmpc@exe/src_screen_artist.c.o' 'ncmpc@exe/src_screen_search.c.o' 'ncmpc@exe/src_screen_song.c.o' 'ncmpc@exe/src_screen_keydef.c.o' 'ncmpc@exe/src_screen_outputs.c.o' -L/usr/local/Cellar/glib/2.54.0/lib -L/usr/local/opt/gettext/lib -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation -L/usr/local/Cellar/libmpdclient/2.13/lib -lmpdclient
Undefined symbols for architecture x86_64:
"_COLORS", referenced from:
_colors_start in src_colors.c.o
"_COLS", referenced from:
_status_bar_paint in src_status_bar.c.o
_screen_resize in src_screen_init.c.o
_screen_init in src_screen_init.c.o
__wreadln in src_wreadln.c.o
"_LINES", referenced from:
_screen_resize in src_screen_init.c.o
_screen_init in src_screen_init.c.o
"_acs_map", referenced from:
_title_bar_paint in src_title_bar.c.o
_progress_bar_paint in src_progress_bar.c.o
"_beep", referenced from:
_screen_bell in src_screen_utils.c.o
"_can_change_color", referenced from:
_colors_start in src_colors.c.o
"_curs_set", referenced from:
_ncu_init in src_ncu.c.o
_screen_resize in src_screen_init.c.o
_screen_getch in src_screen_utils.c.o
_screen_readln in src_screen_utils.c.o
_screen_read_password in src_screen_utils.c.o
_list_window_paint in src_list_window.c.o
_list_window_paint2 in src_list_window.c.o
...
"_delscreen", referenced from:
_ncu_deinit in src_ncu.c.o
"_delwin", referenced from:
_status_bar_deinit in src_status_bar.c.o
_screen_exit in src_screen_init.c.o
_title_bar_deinit in src_screen_init.c.o
_progress_bar_deinit in src_screen_init.c.o
"_doupdate", referenced from:
_mpdclient_connected_callback in src_main.c.o
_timer_reconnect in src_main.c.o
_timer_check_key_bindings in src_main.c.o
_mpdclient_error_callback in src_callbacks.c.o
_welcome_timer_callback in src_screen_init.c.o
_screen_paint in src_screen_paint.c.o
_drawline in src_wreadln.c.o
...
"_echo", referenced from:
_screen_getch in src_screen_utils.c.o
"_endwin", referenced from:
_ncu_deinit in src_ncu.c.o
_sigwinch_event in src_signals.c.o
"_flash", referenced from:
_screen_bell in src_screen_utils.c.o
"_getcurx", referenced from:
__wreadln in src_wreadln.c.o
"_getcury", referenced from:
__wreadln in src_wreadln.c.o
"_has_colors", referenced from:
_colors_start in src_colors.c.o
"_init_color", referenced from:
_colors_start in src_colors.c.o
"_init_pair", referenced from:
_colors_update_pair in src_colors.c.o
"_keypad", referenced from:
_ncu_init in src_ncu.c.o
_status_bar_init in src_status_bar.c.o
_screen_init in src_screen_init.c.o
_title_bar_init in src_screen_init.c.o
"_leaveok", referenced from:
_status_bar_init in src_status_bar.c.o
_screen_init in src_screen_init.c.o
_title_bar_init in src_screen_init.c.o
_progress_bar_init in src_screen_init.c.o
"_mvwin", referenced from:
_progress_bar_resize in src_progress_bar.c.o
_status_bar_resize in src_status_bar.c.o
"_newterm", referenced from:
_ncu_init in src_ncu.c.o
"_newwin", referenced from:
_window_init in src_status_bar.c.o
_window_init in src_screen_init.c.o
"_noecho", referenced from:
_ncu_init in src_ncu.c.o
_screen_getch in src_screen_utils.c.o
__wreadln in src_wreadln.c.o
"_nonl", referenced from:
_ncu_init in src_ncu.c.o
"_resizeterm", referenced from:
_screen_resize in src_screen_init.c.o
"_start_color", referenced from:
_colors_start in src_colors.c.o
"_stdscr", referenced from:
_ncu_init in src_ncu.c.o
_screen_init in src_screen_init.c.o
_sigwinch_event in src_signals.c.o
"_use_default_colors", referenced from:
_colors_start in src_colors.c.o
"_waddch", referenced from:
_title_bar_paint in src_title_bar.c.o
_print_hotkey in src_title_bar.c.o
_progress_bar_paint in src_progress_bar.c.o
_screen_browser_paint_directory in src_screen_browser.c.o
_paint_song_row in src_song_paint.c.o
_screen_help_paint_callback in src_screen_help.c.o
"_waddnstr", referenced from:
_title_bar_paint in src_title_bar.c.o
_print_hotkey in src_title_bar.c.o
_status_bar_paint in src_status_bar.c.o
_status_bar_message in src_status_bar.c.o
_screen_getch in src_screen_utils.c.o
_screen_display_completion_list in src_screen_utils.c.o
_screen_browser_paint_directory in src_screen_browser.c.o
...
"_wattr_get", referenced from:
_fix_wattr_get in src_colors.c.o
_fix_wattr_get in src_hscroll.c.o
"_wattr_off", referenced from:
_row_color in src_screen_browser.c.o
_row_color_end in src_list_window.c.o
_row_color in src_list_window.c.o
_row_color in src_song_paint.c.o
_row_color in src_screen_help.c.o
_row_color in src_screen_outputs.c.o
"_wattr_on", referenced from:
_row_color in src_screen_browser.c.o
_row_color in src_list_window.c.o
_row_color in src_song_paint.c.o
_row_color in src_screen_help.c.o
_row_color in src_screen_outputs.c.o
"_wattr_set", referenced from:
_colors_use in src_colors.c.o
_hscroll_draw in src_hscroll.c.o
"_wattrset", referenced from:
_colors_use in src_colors.c.o
"_wbkgd", referenced from:
_screen_init in src_screen_init.c.o
"_wclear", referenced from:
_screen_paint in src_screen_paint.c.o
"_wclrtobot", referenced from:
_list_window_paint in src_list_window.c.o
_list_window_paint2 in src_list_window.c.o
_screen_artist_paint in src_screen_artist.c.o
"_wclrtoeol", referenced from:
_title_bar_paint in src_title_bar.c.o
_status_bar_clear_message in src_status_bar.c.o
_status_bar_paint in src_status_bar.c.o
_status_bar_message in src_status_bar.c.o
_screen_display_completion_list in src_screen_utils.c.o
_row_clear_to_eol in src_screen_browser.c.o
_row_clear_to_eol in src_list_window.c.o
...
"_werase", referenced from:
_screen_getch in src_screen_utils.c.o
"_wgetch", referenced from:
_keyboard_event in src_keyboard.c.o
_screen_getch in src_screen_utils.c.o
__wreadln in src_wreadln.c.o
_wreadln_insert_byte in src_wreadln.c.o
"_whline", referenced from:
_title_bar_paint in src_title_bar.c.o
_progress_bar_paint in src_progress_bar.c.o
_row_clear_to_eol in src_screen_browser.c.o
_row_clear_to_eol in src_list_window.c.o
_row_clear_to_eol in src_song_paint.c.o
__wreadln in src_wreadln.c.o
_drawline in src_wreadln.c.o
...
"_wmove", referenced from:
_title_bar_paint in src_title_bar.c.o
_progress_bar_paint in src_progress_bar.c.o
_status_bar_clear_message in src_status_bar.c.o
_status_bar_paint in src_status_bar.c.o
_status_bar_message in src_status_bar.c.o
_screen_paint in src_screen_paint.c.o
_screen_getch in src_screen_utils.c.o
...
"_wnoutrefresh", referenced from:
_title_bar_paint in src_title_bar.c.o
_progress_bar_paint in src_progress_bar.c.o
_status_bar_paint in src_status_bar.c.o
_status_bar_message in src_status_bar.c.o
_screen_paint in src_screen_paint.c.o
"_wrefresh", referenced from:
_ncu_init in src_ncu.c.o
_status_bar_clear_message in src_status_bar.c.o
_screen_display_completion_list in src_screen_utils.c.o
_screen_jump in src_screen_find.c.o
_screen_queue_repaint in src_screen_queue.c.o
_sigwinch_event in src_signals.c.o
_hscroll_timer_callback in src_hscroll.c.o
...
"_wresize", referenced from:
_title_bar_resize in src_title_bar.c.o
_progress_bar_resize in src_progress_bar.c.o
_status_bar_resize in src_status_bar.c.o
_screen_resize in src_screen_init.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Warning messages on Debian testing x64
$ meson --buildtype=release -Ddocumentation=disabled . output
The Meson build system
Version: 0.52.1
Source dir: /data/src/ncmpc
Build dir: /data/src/ncmpc/output
Build type: native build
Project name: ncmpc
Project version: 0.38
C++ compiler for the host machine: c++ (gcc 10.0.1 "c++ (Debian 10-20200211-1) 10.0.1 20200211 (experimental)")
C++ linker for the host machine: GNU ld.bfd 2.34
Host machine cpu family: x86_64
Host machine cpu: x86_64
Has header "locale.h" : YES
Has header "libintl.h" : YES
Header <locale.h> has symbol "locale_t" : YES
Checking for function "iconv" : YES
Found pkg-config: /usr/bin/pkg-config (0.29)
Run-time dependency ncursesw found: YES 6.1.20191019
Has header "curses.h" with dependency ncursesw: YES
Checking for function "getmouse" with dependency ncursesw: YES
Found CMake: /usr/bin/cmake (3.16.3)
Run-time dependency lirc found: NO (tried pkgconfig and cmake)
Compiler for C++ supports arguments -Wall: YES
Compiler for C++ supports arguments -Wextra: YES
Compiler for C++ supports arguments -Wno-deprecated-declarations -Wdeprecated-declarations: YES
Compiler for C++ supports arguments -Wshadow: YES
Compiler for C++ supports arguments -Wpointer-arith: YES
Compiler for C++ supports arguments -Wcast-qual: YES
Compiler for C++ supports arguments -Wcast-align: YES
Compiler for C++ supports arguments -Wwrite-strings: YES
Compiler for C++ supports arguments -Wmissing-declarations: YES
Compiler for C++ supports arguments -Wmissing-noreturn: YES
Compiler for C++ supports arguments -Wmissing-format-attribute: YES
Compiler for C++ supports arguments -Wredundant-decls: YES
Compiler for C++ supports arguments -Wundef: YES
Compiler for C++ supports arguments -Wno-non-virtual-dtor -Wnon-virtual-dtor: YES
Compiler for C++ supports arguments -fvisibility=hidden: YES
Compiler for C++ supports arguments -Wno-format-truncation -Wformat-truncation: YES
Compiler for C++ supports arguments -ffunction-sections: YES
Compiler for C++ supports arguments -fdata-sections: YES
WARNING: Consider using the builtin warning_level option instead of adding warning flags by hand.
WARNING: Consider using the builtin warning_level option instead of adding warning flags by hand.
Run-time dependency threads found: YES
Run-time dependency Boost found: YES 1.71
Run-time dependency libmpdclient found: YES 2.19
Run-time dependency libpcre found: YES 8.39
Configuring config.h using configuration
Program sphinx-build skipped: feature documentation disabled
Build targets in project: 5
Found ninja-1.10.0 at /usr/bin/ninja
Hi. I am the maintainer of ncmpc
in MacPorts. I received a bug report from an user who could not build version 0.33 on MacOS 10.11 [1]:
info:build {
--
:info:build ^
:info:build ../ncmpc-0.33/src/Main.cxx:293:22: error: default initialization of an object of const type 'const ScopeInitUTF8' without a user-provided default constructor
:info:build const ScopeInitUTF8 init_utf8;
:info:build ^
:info:build {}
:info:build 2 warnings and 1 error generated.
In this system, locale_t
is not defined which results in an empty ScopeInitUTF8
class, and apparently that triggers an error on old versions of clang that enforce a defect in the C++ standard, later corrected [3]. I could try introducing a patch downstream to work around that, but it would be even better if this could be addressed upstream?
[1] https://trac.macports.org/attachment/ticket/57996/main.log
[2]
Line 27 in c8bcf22
How does sone install this on mac terminal? I don't have apt.
Situation: I have a song in the queue with a very long title that consists of both Japaneese (kanji) and English characters, so some of them are 2 spaces in width.
Current behavior: when terminal window width is even, it may happen that the last displayed character of the title is a two-spaced kanjii. In this case, after displaying the song title, ncmpc
tries to print its duration (6:03), but the remaining place is not enough, so only 6:0 stays on the same line, and 3 goes to the next one.
Problem occurs both with scroll=0
and scroll=1
Expected behavior: if the last displayed character occupies two spaces, it is replaced by a space so that the duration fits in the line.
Regressed by boostorg/asio@a72fbb0b867f:
In file included from ../src/player_command.cxx:23:
../src/mpdclient.hxx:133:27: error: no member named 'get_io_service' in
'boost::asio::basic_waitable_timer<std::__1::chrono::steady_clock,
boost::asio::wait_traits<std::__1::chrono::steady_clock>, boost::asio::executor>'
return enter_idle_timer.get_io_service();
~~~~~~~~~~~~~~~~ ^
../src/mpdclient.hxx:132:8: error: cannot deduce return type 'auto &' for function with no return statements
auto &get_io_service() noexcept {
^
2 errors generated.
Hello,
Since the #mpd channel is censored by a dictator asshole (excerpt verbatim from the conversation)
20:43 -!- Irssi: Join to #mpd was synced in 1 secs
20:43 < markand> hello there
20:44 < markand> is there something wrong with MPD_HOST environment variable for ncmpc? I've tried export MPD_HOST=the_password@the_hostname
20:44 < markand> ncmpc connects fine but it does not use the password, any step requires to type it
20:44 < markand> and more importantly, it's written at the top “Queue on the_password@the_hostname”
20:45 <@cirrus> how do you know it does not use the password?
20:45 < markand> because if I try any command it prompts me the password
20:46 < markand> and being printed on the top of the screen I thought it was ignored
20:46 <@cirrus> so you did not actually verify your assertion?
20:47 < markand> cirrus, I have not verified the source code, I just wondering why I should have to pass the password both in MPD_HOST and each time I need to do an operation
20:48 <@cirrus> I did not ask whether you have verified the source code.
20:49 <@cirrus> at this point, it's time for you to start reading the channel topic.
20:49 < markand> cirrus, what is it always that hard to speak with you? it's not the first time you have a very condescending talk with me
20:50 < markand> this is not encouraging any user contribution
20:50 <@cirrus> ok, I'll stop replying to you.
20:50 * Rasi understood the question just fine
20:51 < markand> yeah, ten years old reaction
20:51 -!- markand was kicked from #mpd by cirrus [bye]
20:51 -!- markand [~markand@unaffiliated/markand] has joined #mpd
20:51 -!- Topic for #mpd: Music Player Daemon | Latest 0.20.19 | http://www.musicpd.org/ | Problems? Just ask away, and please provide the info as explained on: http://www.musicpd.org/help/
20:51 -!- Topic set by cirrus [] [Thu Apr 26 20:00:59 2018]
20:51 [Users #mpd]
20:51 [@cirrus ] [ Civil ] [ frispete ] [ lagothrix ] [ pyllyukko ] [ VargaD ]
20:51 [@Rasi ] [ codebam ] [ frobnicator] [ lvlinux ] [ ravndal ] [ veremitz ]
20:51 [ _dev_zero ] [ Commander1024] [ gpol ] [ lynxis ] [ SCHAPiE ] [ winny ]
20:51 [ ajashton ] [ craigger ] [ hl ] [ markand ] [ sentriz ] [ wolfshappen]
20:51 [ Alam_Squeeze] [ divx118 ] [ Hobbyboy ] [ Mindi ] [ soapsurfer ] [ x73 ]
20:51 [ ArsenArsen ] [ djselbeck ] [ HumanG33k ] [ minimalism ] [ souther ] [ xcm ]
20:51 [ ashka ] [ DogBoy ] [ i7c ] [ moviuro ] [ sqozz ] [ xSmurf ]
20:51 [ at0m ] [ doppo ] [ infinisil ] [ NightMonkey] [ storrgie ] [ zeltak ]
20:51 [ atomi ] [ dysfigured ] [ jnes ] [ npanic ] [ SuperTux88 ] [ zyliwax ]
20:51 [ belak ] [ emilsp ] [ KannOx ] [ ntnn ] [ swimmer ]
20:51 [ brethil ] [ eu ] [ katie_ ] [ oldlaptop ] [ sydney_untangle]
20:51 [ buZz ] [ felixsanz ] [ ketas ] [ poxifide ] [ szgyg ]
20:51 [ catern ] [ FichteFoll ] [ keur ] [ prg318 ] [ thesquib ]
20:51 [ chowbok ] [ friedrich_ ] [ KittyKatt ] [ Psy-Q ] [ Valfor ]
20:51 -!- Irssi: #mpd: Total of 79 nicks [2 ops, 0 halfops, 0 voices, 77 normal]
20:51 -!- Channel #mpd created Sun Nov 26 07:42:55 2006
20:51 -!- Irssi: Join to #mpd was synced in 1 secs
20:51 < markand> I didn't know it's so hard to understand someone asking why password is required twice
20:51 -!- mode/#mpd [+b *!*markand@unaffiliated/markand] by cirrus
20:51 -!- markand was kicked from #mpd by cirrus [I SAID BYE]
Basically, I'm wondering why is the password required twice and printed on the top of the screen, example:
export MPD_HOST=password@hostname
export MPD_PORT=35000
Now, if I run ncmpc
, on the top of the screen the password will be printed in clear “Queue on password@hostname” and each command require to type the password again. Should it be better to keep it and avoid printing it on the screen?
Hello !
I think the lyrics screen is lacking word wrapping.
That is propably a rare case, but some songs have very long sentences ( for example Léo Ferré's La Solitude ) and there is no way to read the whole line.
Cheers !
Hi,
Not sure it's a issue, but because I don't find any documentation about that...
When I go inside ncmpc in the browser section I'm totally unable to understand how the file are sorted.
I check in the filesystem the name of the file are 'track_number - ' so through a «ls -l» it's correctly sorted.
I check the metadata for those file, the track number are correct.
But I've got something don't fit anything, not the title, not the tracknumber, not the file name sort.
And ncmpc does that only on ~ 30% of my folder.
Per #31
Improve configuration file comments to better illustrate what color title and color title-bold refer to (i.e., the former refers to the right-hand volume display and screen list names, and the latter the left-hand title)
On this topic, why do the screen list names use color title and the name prefixes use color title-bold? This seems randomly inconsistent to me. I'd recommend a setting for the screen list information and title, and a separate for the volume indicator
When trying to connect to a Chord Poly (HighRes audio player) running MPD an error message is shown. I'm able to connect from an Android client (MAFA 1.2.9) without any issues. Unfortunately I'm not able to grab the version of the MPD service running on the Chord Poly.
wrong number of arguments for "tagtypes"
ncmpc version: 0.36
build options: debug multibyte wide locale iconv nls colors lirc getmouse artist-screen help-screen search-screen song-screen key-screen lyrics-screen outputs-screen
configuration files:
/home/s28131/.config/ncmpc/config
/home/s28131/.ncmpc/config
/etc/ncmpc/config
ncmpc is mis-behaving lately, this is what happens ( i am not sure what triggers this ) :
(process:24772): GLib-CRITICAL **: Source ID 105296 was not found when attempting to remove it (process:24772): GLib-CRITICAL **: Source ID 105297 was not found when attempting to remove it
Segmentation fault (core dumped)
journalctl shows this :
Oct 05 07:53:00 speedy systemd[1]: Created slice system-systemd\x2dcoredump.slice.
Oct 05 07:53:00 speedy systemd[1]: Started Process Core Dump (PID 14002/UID 0).
Oct 05 07:53:00 speedy systemd-coredump[14003]: Process 24772 (ncmpc) of user 1000 dumped core.
Stack trace of thread 24772:
#0 0x0000000000419e16 n/a (ncmpc)
#1 0x000000000041a1dd n/a (ncmpc)
#2 0x00007f1b888ea343 n/a (libglib-2.0.so.0)
#3 0x00007f1b888e98c5 g_main_context_dispatch (libglib-2.0.so.0)
#4 0x00007f1b888e9c88 n/a (libglib-2.0.so.0)
#5 0x00007f1b888e9fa2 g_main_loop_run (libglib-2.0.so.0)
#6 0x0000000000407424 n/a (ncmpc)
#7 0x00007f1b88508f6a __libc_start_main (libc.so.6)
#8 0x00000000004074fa n/a (ncmpc)
Stack trace of thread 24773:
#0 0x00007f1b885d3cbb __poll (libc.so.6)
#1 0x00007f1b888e9c09 n/a (libglib-2.0.so.0)
#2 0x00007f1b888e9d1c g_main_context_iteration (libglib-2.0.so.0)
#3 0x00007f1b888e9d61 n/a (libglib-2.0.so.0)
#4 0x00007f1b88910ae5 n/a (libglib-2.0.so.0)
#5 0x00007f1b8805e08a start_thread (libpthread.so.0)
#6 0x00007f1b885de1bf __clone (libc.so.6)
ncmpc version: 0.27
build options: multibyte wide locale nls colors getmouse artist-screen help-screen search-screen song-screen key-screen lyrics-screen outputs-screen
Opening the search prompt (5 5
) results in high cpu usage, which stops when the search ends (after pressing Enter
).
The output of strace is similar to that described in #40 (comment)
Related: #40.
I’ve searched in the documentation, but found noting beside https://github.com/MusicPlayerDaemon/ncmpc/blob/master/src/wreadln.cxx#L38
It would be super nice if ncmpc don't show a empty list when tag info doesn't exist.
Let's say I use
library-page-tags = composer album artist performer date
in the .config/ncmpc/config,
And let's say for a bunch of audio file under same composer_album_artist I don't have performer tag, then I will get in ncmpc a list with
[..]
[]
[All]
So in that case the [] = [All] because no file got a tag, so in that case it would be super nice to just don't show this list and jump directly to the [All] list.
Regards
Hi,
If I run ncmpc using ncmpc
, with environment variables set as
MPD_HOST = "[email protected]"
MPD_PORT = "1234"
the queue panel has the title "Queue on [email protected]".
If I run ncmpc using ncmpc --host=127.0.0.1 --port=1234 --password=password
, the queue panel has the title "Queue on 127.0.0.1", i.e. the titles are not consistent, and it includes the password in the first case.
mpd: 0.19.21-1
ncmpc: 0.25-0.1
Example:
Search: ыыыncmpc: src/wreadln.c:355: wreadln_delete_char: Assertion `x < strlen(wr->line)' failed. Aborted
Env:
On Alpine Linux edge:
$ git describe
v0.28-2-g911d7e9
$ ninja -C output/
ninja: Entering directory `output/'
ninja: no work to do.
$ ./output/ncmpc -h foo.bar.com
Connecting to foo.bar.com... [Press q to abort]Assertion failed: ac->rconnect != NULL (../src/aconnect.c: aconnect_rconnect_error:125) Aborted
Doesn't seem to be 100% reproducible but every second run or so seems to trigger this…
Launching ncmp against a password protected MPD, I hit 3
then try to add a folder with a
, ncmpc prompts for the password, keep it empty and hit enter
key:
ncmpc: ../src/ierror.h:129: mpd_error_get_message: Assertion error->code != MPD_ERROR_SUCCESS' failed.
ncmpc --version
ncmpc --version
ncmpc version: 0.37
build options: debug multibyte wide locale iconv nls colors lirc getmouse artist-screen help-screen search-screen song-screen key-screen lyrics-screen outputs-screen chat-screen
[…]
Here is threads backtrace:
Continuing.
Thread 1 "ncmpc" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: Aucun fichier ou dossier de ce type.
Thread 2 (Thread 0x7fc1c1ac9700 (LWP 13794)):
#0 futex_wait_cancelable (private=0, expected=0, futex_word=0x564536436ef8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 __pthread_cond_wait_common (abstime=0x0, mutex=0x564536436e98, cond=0x564536436ed0) at pthread_cond_wait.c:502
#2 __pthread_cond_wait (cond=cond@entry=0x564536436ed0, mutex=0x564536436e98) at pthread_cond_wait.c:655
#3 0x00005645348de8f4 in boost::asio::detail::posix_event::wait<boost::asio::detail::conditionally_enabled_mutex::scoped_lock> (lock=..., this=<optimized out>) at /usr/include/boost/asio/detail/conditionally_enabled_mutex.hpp:98
#4 boost::asio::detail::posix_event::wait<boost::asio::detail::conditionally_enabled_mutex::scoped_lock> (lock=..., this=<optimized out>) at /usr/include/boost/asio/detail/posix_event.hpp:100
#5 boost::asio::detail::conditionally_enabled_event::wait (lock=..., this=0x564536436ec8) at /usr/include/boost/asio/detail/conditionally_enabled_event.hpp:89
#6 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=0x564536436e60) at /usr/include/boost/asio/detail/impl/scheduler.ipp:409
#7 boost::asio::detail::scheduler::run (this=0x564536436e60, ec=...) at /usr/include/boost/asio/detail/impl/scheduler.ipp:154
#8 0x00005645348df1e7 in boost::asio::io_context::run (this=0x5645363e5480) at /usr/include/boost/asio/impl/io_context.ipp:62
#9 boost::asio::detail::resolver_service_base::work_io_context_runner::operator() (this=<optimized out>) at /usr/include/boost/asio/detail/impl/resolver_service_base.ipp:32
#10 boost::asio::detail::posix_thread::func<boost::asio::detail::resolver_service_base::work_io_context_runner>::run (this=<optimized out>) at /usr/include/boost/asio/detail/posix_thread.hpp:86
#11 0x00005645348de1df in boost::asio::detail::boost_asio_detail_posix_thread_function (arg=0x564536437100) at /usr/include/boost/asio/detail/impl/posix_thread.ipp:74
#12 0x00007fc1c2135fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#13 0x00007fc1c20664cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7fc1c1db2240 (LWP 13793)):
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007fc1c1f8f535 in __GI_abort () at abort.c:79
#2 0x00007fc1c1f8f40f in __assert_fail_base (fmt=0x7fc1c20f1ee0 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fc1c2302178 "error->code != MPD_ERROR_SUCCESS", file=0x7fc1c230202e "../src/ierror.h", line=129, function=<optimized out>) at assert.c:92
#3 0x00007fc1c1f9d102 in __GI___assert_fail (assertion=0x7fc1c2302178 "error->code != MPD_ERROR_SUCCESS", file=0x7fc1c230202e "../src/ierror.h", line=129, function=0x7fc1c2302c20 "mpd_error_get_message") at assert.c:101
#4 0x00007fc1c22f9300 in mpd_connection_get_error_message () from /lib/x86_64-linux-gnu/libmpdclient.so.2
#5 0x00005645348bdf72 in mpdclient::HandleError (this=this@entry=0x7ffe687eea60) at ../src/mpdclient.cxx:124
#6 0x00005645348bec2b in mpdclient::FinishCommand (this=0x7ffe687eea60) at ../src/mpdclient.hxx:263
#7 mpdclient_cmd_add_path (c=c@entry=0x7ffe687eea60, path_utf8=<optimized out>) at ../src/mpdclient.cxx:606
#8 0x00005645348cd20e in browser_select_entry (c=c@entry=0x7ffe687eea60, entry=<optimized out>, toggle=toggle@entry=false) at ../src/FileListPage.cxx:251
#9 0x00005645348cd8cb in FileListPage::HandleAdd (this=this@entry=0x564536439710, c=...) at ../src/FileListPage.cxx:321
#10 0x00005645348cdabb in FileListPage::OnCommand (cmd=Command::STOP, c=..., this=0x564536439710) at ../src/FileListPage.cxx:440
#11 FileListPage::OnCommand (this=this@entry=0x564536439710, c=..., cmd=cmd@entry=Command::ADD) at ../src/FileListPage.cxx:371
#12 0x00005645348ceaee in FileBrowserPage::OnCommand (this=0x564536439710, c=..., cmd=Command::ADD) at ../src/FileBrowserPage.cxx:353
#13 0x00005645348c7eb8 in ScreenManager::OnCommand (this=0x7ffe687eec50, c=..., seek=..., cmd=cmd@entry=Command::ADD) at /usr/include/c++/8/bits/unique_ptr.h:342
#14 0x00005645348aa432 in do_input_event (io_service=..., cmd=cmd@entry=Command::ADD) at ../src/Instance.hxx:91
#15 0x00005645348c4567 in AsyncUserInput::OnReadable (error=..., this=0x7ffe687eeef0) at /usr/include/boost/asio/impl/io_context.hpp:215
#16 AsyncUserInput::OnReadable (this=0x7ffe687eeef0, error=...) at ../src/AsyncUserInput.cxx:43
#17 0x00005645348c3a46 in std::__invoke_impl<void, void (AsyncUserInput::*&)(boost::system::error_code const&), AsyncUserInput*&, boost::system::error_code const&> (__f=@0x7ffe687ee7f0: (void (AsyncUserInput::*)(class AsyncUserInput * const, const class boost::system::error_code &)) 0x5645348c4500 <AsyncUserInput::OnReadable(boost::system::error_code const&)>, __f=@0x7ffe687ee7f0: (void (AsyncUserInput::*)(class AsyncUserInput * const, const class boost::system::error_code &)) 0x5645348c4500 <AsyncUserInput::OnReadable(boost::system::error_code const&)>, __t=@0x7ffe687ee800: 0x7ffe687eeef0) at /usr/include/c++/8/bits/invoke.h:70
#18 std::__invoke<void (AsyncUserInput::*&)(boost::system::error_code const&), AsyncUserInput*&, boost::system::error_code const&> (__fn=@0x7ffe687ee7f0: (void (AsyncUserInput::*)(class AsyncUserInput * const, const class boost::system::error_code &)) 0x5645348c4500 <AsyncUserInput::OnReadable(boost::system::error_code const&)>) at /usr/include/c++/8/bits/invoke.h:95
#19 std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>::__call<void, boost::system::error_code const&, unsigned long const&, 0ul, 1ul>(std::tuple<boost::system::error_code const&, unsigned long const&>&&, std::_Index_tuple<0ul, 1ul>) (__args=..., this=0x7ffe687ee7f0) at /usr/include/c++/8/functional:400
#20 std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>::operator()<boost::system::error_code const&, unsigned long const&, void>(boost::system::error_code const&, unsigned long const&) (this=0x7ffe687ee7f0) at /usr/include/c++/8/functional:484
#21 boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long>::operator()() (this=0x7ffe687ee7f0) at /usr/include/boost/asio/detail/bind_handler.hpp:164
#22 boost::asio::asio_handler_invoke<boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long>&, ...) (function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#23 boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long>, std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)> >(boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long>&, std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>&) (context=..., function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#24 boost::asio::detail::handler_work<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::asio::system_executor>::complete<boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>, boost::system::error_code, unsigned long>&, std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)>&) (this=<synthetic pointer>, handler=..., function=...) at /usr/include/boost/asio/detail/handler_work.hpp:82
#25 boost::asio::detail::reactive_null_buffers_op<std::_Bind<void (AsyncUserInput::*(AsyncUserInput*, std::_Placeholder<1>))(boost::system::error_code const&)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (owner=0x564536423b60, base=<optimized out>) at /usr/include/boost/asio/detail/reactive_null_buffers_op.hpp:77
#26 0x00005645348b0a8d in boost::asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0x564536423b60, this=0x5645364395f0) at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#27 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (bytes_transferred=<optimized out>, ec=..., base=<optimized out>, owner=0x564536423b60) at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:776
#28 boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x564536423b60, base=<optimized out>, ec=..., bytes_transferred=<optimized out>) at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:766
#29 0x00005645348b4d2a in boost::asio::detail::scheduler_operation::complete (bytes_transferred=1, ec=..., owner=0x564536423b60, this=<optimized out>) at /usr/include/boost/asio/detail/scheduler_operation.hpp:40
#30 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=0x564536423b60) at /usr/include/boost/asio/detail/impl/scheduler.ipp:401
#31 boost::asio::detail::scheduler::run (ec=..., this=0x564536423b60) at /usr/include/boost/asio/detail/impl/scheduler.ipp:154
#32 boost::asio::io_context::run (this=0x564536423b60) at /usr/include/boost/asio/impl/io_context.ipp:62
#33 Instance::Run (this=this@entry=0x7ffe687eea10) at ../src/Instance.cxx:102
#34 0x000056453489de06 in main (argc=<optimized out>, argv=<optimized out>) at ../src/Main.cxx:360
Detaching from program: /usr/bin/ncmpc, process 13793
[Inferior 1 (process 13793) detached]
With my MPD_HOST
set to [email protected]
, ncmpc versions 0.26 and 0.27 can't connect to my MPD on my LAN server, but ncmpc 0.25 can.
Looking at the raw network traffic, I can see that 0.25 correctly sends a password
command as the first command:
192.168.068.001.06600-192.168.068.003.52738: OK MPD 0.19.0
192.168.068.003.52738-192.168.068.001.06600: password "password"
192.168.068.001.06600-192.168.068.003.52738: OK
192.168.068.003.52738-192.168.068.001.06600: status
192.168.068.001.06600-192.168.068.003.52738: volume: -1
repeat: 0
random: 0
[etc]
But the issue is that 0.26 and 0.27 just try to launch straight into status
and fail:
192.168.068.001.06600-192.168.068.003.52743: OK MPD 0.19.0
192.168.068.003.52743-192.168.068.001.06600: status
192.168.068.001.06600-192.168.068.003.52743: ACK [4@0] {status} you don't have permission for "status"
(I can't seem to compile the latest git so I can't see if it's fixed there.)
This originally happened on ncmpc installed via homebrew, but I've compiled the 0.25, 0.26, and 0.27 binaries directly from the GIthub releases to test them. macOS Sierra, 10.12.6.
Building ncmpc I end up with the manual deployed in "/usr/local/share/man/man/man1"
Pressing 7 to search for lyrics searches forever and never returns result.
Using script manually (/usr/lib64/ncmpc/lyrics/20-lyricwiki.rb Artist Song) works though.
Ruby is installed.
ncmpc is 0.30
Release build, debug option should not be enabled, but it is
$ meson . output --buildtype=release
build options: debug multibyte wide locale nls colors getmouse artist-screen help-screen search-screen song-screen key-screen outputs-screen
Debug build, debug is enabled
$ meson . output --buildtype=debug
build options: debug multibyte wide locale nls colors getmouse artist-screen help-screen search-screen song-screen key-screen outputs-screen
Release build, b_ndebug set explicitly, debug is not set
$ meson . output --buildtype=release -Db_ndebug=true
build options: multibyte wide locale nls colors getmouse artist-screen help-screen search-screen song-screen key-screen outputs-screen
There's a warning though:
[36/62] Compiling C++ object 'ncmpc@exe/src_hscroll.cxx.o'.
../src/hscroll.cxx: In static member function ‘static gboolean BindTimeoutCallback<T, method>::Callback(gpointer) [with T = hscroll; bool (T::* method)() = &hscroll::TimerCallback]’:
../src/hscroll.cxx:85:26: warning: ‘old_pair’ may be used uninitialized in this function [-Wmaybe-uninitialized]
wattr_set(w, old_attrs, old_pair, nullptr);
^~~~~~~~
../src/hscroll.cxx:75:8: note: ‘old_pair’ was declared here
short old_pair;
^~~~~~~~
../src/hscroll.cxx: In member function ‘void hscroll::Paint() const’:
../src/hscroll.cxx:85:26: warning: ‘old_pair’ may be used uninitialized in this function [-Wmaybe-uninitialized]
wattr_set(w, old_attrs, old_pair, nullptr);
I looked into build/configure.py.
Meson 0.46.1 does not touch it, but if executed manually - it unconditionally runs meson for three configuration sets ("debug", "release" and "mini"). So ninja -C output/release can be used to build non-debug version (it will fail if lirc is not installed though).
I was very confused recently when ncmpc started to play tracks from my queue in unpredictable order, until I guessed that I had accidentally hit z
. A visual indication that random mode (or one of the other modes listed in the Help tab) is enabled would be very useful to avoid this sort of confusion.
It shows the following message.
*** Error in `ncmpc': double free or corruption (out): 0x0000000000e32c40 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fd4f5dda7e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7fd4f5de2e0a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fd4f5de698c]
/usr/lib/libmpdclient.so.2(mpd_settings_free+0xc)[0x7fd4f644c4bc]
/usr/lib/libmpdclient.so.2(mpd_connection_free+0x4a)[0x7fd4f64450da]
ncmpc[0x407d39]
ncmpc[0x407e99]
ncmpc[0x406f6d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fd4f5d83830]
ncmpc[0x406fe9]
======= Memory map: ========
00400000-00422000 r-xp 00000000 08:05 8127456 /usr/local/bin/ncmpc
00622000-00623000 r--p 00022000 08:05 8127456 /usr/local/bin/ncmpc
00623000-00625000 rw-p 00023000 08:05 8127456 /usr/local/bin/ncmpc
00625000-00626000 rw-p 00000000 00:00 0
00de2000-00e45000 rw-p 00000000 00:00 0 [heap]
7fd4e8000000-7fd4e8021000 rw-p 00000000 00:00 0
7fd4e8021000-7fd4ec000000 ---p 00000000 00:00 0
7fd4f0000000-7fd4f0021000 rw-p 00000000 00:00 0
7fd4f0021000-7fd4f4000000 ---p 00000000 00:00 0
7fd4f4646000-7fd4f465c000 r-xp 00000000 08:05 17437077 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd4f465c000-7fd4f485b000 ---p 00016000 08:05 17437077 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd4f485b000-7fd4f485c000 rw-p 00015000 08:05 17437077 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fd4f485c000-7fd4f4867000 r-xp 00000000 08:05 17432793 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7fd4f4867000-7fd4f4a66000 ---p 0000b000 08:05 17432793 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7fd4f4a66000-7fd4f4a67000 r--p 0000a000 08:05 17432793 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7fd4f4a67000-7fd4f4a68000 rw-p 0000b000 08:05 17432793 /lib/x86_64-linux-gnu/libnss_files-2.23.so
7fd4f4a68000-7fd4f4a6e000 rw-p 00000000 00:00 0
7fd4f4a6e000-7fd4f4a6f000 ---p 00000000 00:00 0
7fd4f4a6f000-7fd4f526f000 rw-p 00000000 00:00 0
7fd4f526f000-7fd4f56d0000 r--p 00000000 08:05 8000026 /usr/lib/locale/locale-archive
7fd4f56d0000-7fd4f56e8000 r-xp 00000000 08:05 17432800 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fd4f56e8000-7fd4f58e7000 ---p 00018000 08:05 17432800 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fd4f58e7000-7fd4f58e8000 r--p 00017000 08:05 17432800 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fd4f58e8000-7fd4f58e9000 rw-p 00018000 08:05 17432800 /lib/x86_64-linux-gnu/libpthread-2.23.so
7fd4f58e9000-7fd4f58ed000 rw-p 00000000 00:00 0
7fd4f58ed000-7fd4f595e000 r-xp 00000000 08:05 17432739 /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fd4f595e000-7fd4f5b5d000 ---p 00071000 08:05 17432739 /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fd4f5b5d000-7fd4f5b5e000 r--p 00070000 08:05 17432739 /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fd4f5b5e000-7fd4f5b5f000 rw-p 00071000 08:05 17432739 /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fd4f5b5f000-7fd4f5b62000 r-xp 00000000 08:05 17432708 /lib/x86_64-linux-gnu/libdl-2.23.so
7fd4f5b62000-7fd4f5d61000 ---p 00003000 08:05 17432708 /lib/x86_64-linux-gnu/libdl-2.23.so
7fd4f5d61000-7fd4f5d62000 r--p 00002000 08:05 17432708 /lib/x86_64-linux-gnu/libdl-2.23.so
7fd4f5d62000-7fd4f5d63000 rw-p 00003000 08:05 17432708 /lib/x86_64-linux-gnu/libdl-2.23.so
7fd4f5d63000-7fd4f5f22000 r-xp 00000000 08:05 17432787 /lib/x86_64-linux-gnu/libc-2.23.so
7fd4f5f22000-7fd4f6122000 ---p 001bf000 08:05 17432787 /lib/x86_64-linux-gnu/libc-2.23.so
7fd4f6122000-7fd4f6126000 r--p 001bf000 08:05 17432787 /lib/x86_64-linux-gnu/libc-2.23.so
7fd4f6126000-7fd4f6128000 rw-p 001c3000 08:05 17432787 /lib/x86_64-linux-gnu/libc-2.23.so
7fd4f6128000-7fd4f612c000 rw-p 00000000 00:00 0
7fd4f612c000-7fd4f623b000 r-xp 00000000 08:05 17432622 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
7fd4f623b000-7fd4f643a000 ---p 0010f000 08:05 17432622 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
7fd4f643a000-7fd4f643b000 r--p 0010e000 08:05 17432622 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
7fd4f643b000-7fd4f643c000 rw-p 0010f000 08:05 17432622 /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
7fd4f643c000-7fd4f643d000 rw-p 00000000 00:00 0
7fd4f643d000-7fd4f6453000 r-xp 00000000 08:05 8003694 /usr/lib/libmpdclient.so.2.0.9
7fd4f6453000-7fd4f6652000 ---p 00016000 08:05 8003694 /usr/lib/libmpdclient.so.2.0.9
7fd4f6652000-7fd4f6653000 r--p 00015000 08:05 8003694 /usr/lib/libmpdclient.so.2.0.9
7fd4f6653000-7fd4f6654000 rw-p 00016000 08:05 8003694 /usr/lib/libmpdclient.so.2.0.9
7fd4f6654000-7fd4f6679000 r-xp 00000000 08:05 17437203 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fd4f6679000-7fd4f6878000 ---p 00025000 08:05 17437203 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fd4f6878000-7fd4f687c000 r--p 00024000 08:05 17437203 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fd4f687c000-7fd4f687d000 rw-p 00028000 08:05 17437203 /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fd4f687d000-7fd4f68aa000 r-xp 00000000 08:05 17437121 /lib/x86_64-linux-gnu/libncursesw.so.5.9
7fd4f68aa000-7fd4f6aaa000 ---p 0002d000 08:05 17437121 /lib/x86_64-linux-gnu/libncursesw.so.5.9
7fd4f6aaa000-7fd4f6aab000 r--p 0002d000 08:05 17437121 /lib/x86_64-linux-gnu/libncursesw.so.5.9
7fd4f6aab000-7fd4f6aac000 rw-p 0002e000 08:05 17437121 /lib/x86_64-linux-gnu/libncursesw.so.5.9
7fd4f6aac000-7fd4f6ad2000 r-xp 00000000 08:05 17432790 /lib/x86_64-linux-gnu/ld-2.23.so
7fd4f6caa000-7fd4f6cb0000 rw-p 00000000 00:00 0
7fd4f6cce000-7fd4f6cd1000 rw-p 00000000 00:00 0
7fd4f6cd1000-7fd4f6cd2000 r--p 00025000 08:05 17432790 /lib/x86_64-linux-gnu/ld-2.23.so
7fd4f6cd2000-7fd4f6cd3000 rw-p 00026000 08:05 17432790 /lib/x86_64-linux-gnu/ld-2.23.so
7fd4f6cd3000-7fd4f6cd4000 rw-p 00000000 00:00 0
7ffc8bfdf000-7ffc8c000000 rw-p 00000000 00:00 0 [stack]
7ffc8c0fb000-7ffc8c0fd000 r--p 00000000 00:00 0 [vvar]
7ffc8c0fd000-7ffc8c0ff000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted (core dumped)
Per #31
Allow setting a prefix char or string that appears before each item. For example ">" or similar. For more clarification, see ncmcpp's configuration.
I am on Archlinux. ncmpc
version:
ncmpc version: 0.38
build options: debug multibyte wide locale iconv nls colors lirc getmouse artist-screen help-screen search-screen song-screen key-screen lyrics-screen outputs-screen
Steps to reproduce:
ncmpc
running and I am not editing the ncmpc/keys
file in an editorncmpc
with no personal configuration files:ncmpc -f /dev/null -k /dev/null
K
and do nothing2
After the steps, the warning message "Note: Did you forget to Apply your changes?" shows up even if I did not edit any keys.
This warning also shows up after I save the settings with "Apply & Save key bindings".
I suppose it should only show up if I have edited some keybindings and do not save it before switching to other screens.
ncmpc v0.32
Colors specified in config file doesn't apply.
stdout:
Unknown color field: title Unknown color field: line Unknown color field: line-flags Unknown color field: list Unknown color field: list-bold Unknown color field: browser-directory Unknown color field: browser-playlist Unknown color field: progressbar Unknown color field: status-song Unknown color field: status-time
Per #31
Adding an option to allow keeping the screens list permanently active would be handy. As it is, it disappears after some time or an action.
After updating mpd and ncmpc, I noticed that ncmpc is using >80% CPU -- it seems to be endlessly looping when idle.
Since I update fairly often, this was probably introduced in the 0.33 release. (It could have been in 0.32, but anything older would be unlikely.)
Versions:
Running Void Linux:
$ uname -a
Linux pranaferox 4.17.9_1 #1 SMP PREEMPT Mon Jul 23 20:12:05 UTC 2018 x86_64 GNU/Linux
The strace log has sending an "idle\n"
to a dup
'd IPv6 socket to ::1
:
sendto(9, "idle\n", 5, MSG_DONTWAIT, NULL, 0) = 5
and then it goes into a loop of running this over and over, as fast as it can:
rt_sigaction(SIGTSTP, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, {sa_handler=0x7f40f83d36f0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, 8) = 0
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
rt_sigaction(SIGTSTP, {sa_handler=0x7f40f83d36f0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, NULL, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, {sa_handler=0x7f40f83d36f0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, 8) = 0
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
poll([{fd=0, events=POLLIN}], 1, 0) = 0 (Timeout)
rt_sigaction(SIGTSTP, {sa_handler=0x7f40f83d36f0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f40f7969370}, NULL, 8) = 0
timerfd_settime(5, TFD_TIMER_ABSTIME, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=1}}, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=2, tv_nsec=985596675}}) = 0
epoll_wait(4, [{EPOLLIN, {u32=2444182820, u64=94100882670884}}], 128, 0) = 1
timerfd_settime(5, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=2, tv_nsec=985560000}}, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}) = 0
aside from the high CPU usage, ncmpc remains responsive.
I used perf to make a flamegraph, and it suggests that Instance:OnCheckKeyBindings
, KeyBindings::Check
, KeyBindings::FindKey
... is the sequence of calls where it's spending nearly all its time. Also, I noticed that the high CPU usage does not appear when run as root, but I don't see an EACCESS
or other permission failures in the strace log suggesting why that makes a difference.
Please let me know if there's any other specific information I could add -- I can reproduce this pretty easily, but I'm not very familiar with modern C++ or the boost APIs. Hopefully these details are enough to point you in the right direction.
Hi,
It would be nice to show cumulative play time of a selection (range-select).
Same with the 2:Queue
view, it could display the total playtime of tracks currently queued.
Thanks
k
Exiting ncmpc 0.27 causes the cursor in terminal emulator to disappear, scrollback to reset, mod keys to stop working and ncmpc appears to print ill-formatted core dump (until you type reset).
0.24 and 0.25 do not exhibit this problem.
ncmpc is 0.27
ncurses is 6.1-r2
shell is bash 4.4_p12
terminal emulator is xfce4-terminal is 0.8.7.2, built against vte 0.48.4
/usr/lib64/libglib-2.0.so.0.5200.3 7fdac814f000-7fdac8150000 r--p 00110000 08:03 411857 /usr/lib64/libglib-2.0.so.0.5200.3 7fdac8150000-7fdac8151000 rw-p 00111000 08:03 411857 /usr/lib64/libglib-2.0.so.0.5200.3 7fdac8151000-7fdac8152000 rw-p 00000000 00:00 0 7fdac8152000-7fdac8169000 r-xp 00000000 08:03 6693 /usr/lib64/libmpdclient.so.2.0.10 7fdac8169000-7fdac8368000 ---p 00017000 08:03 6693 /usr/lib64/libmpdclient.so.2.0.10 7fdac8368000-7fdac8369000 r--p 00016000 08:03 6693 /usr/lib64/libmpdclient.so.2.0.10 7fdac8369000-7fdac836a000 rw-p 00017000 08:03 6693 /usr/lib64/libmpdclient.so.2.0.10 7fdac836a000-7fdac83d4000 r-xp 00000000 08:03 1216681 /lib64/libncursesw.so.6.1 7fdac83d4000-7fdac85d4000 ---p 0006a000 08:03 1216681 /lib64/libncursesw.so.6.1 7fdac85d4000-7fdac85d8000 r--p 0006a000 08:03 1216681 /lib64/libncursesw.so.6.1 7fdac85d8000-7fdac85da000 rw-p 0006e000 08:03 1216681 /lib64/libncursesw.so.6.1 7fdac85da000-7fdac85fd000 r-xp 00000000 08:03 1313175 /lib64/ld-2.25.so 7fdac87c3000-7fdac87c8000 rw-p 00000000 00:00 0 7fdac87f2000-7fdac87f3000 rw-p 00000000 00:00 0 7fdac87f3000-7fdac87fa000 r--s 00000000 08:03 3026772 /usr/lib64/gconv/gconv-modules.cache 7fdac87fa000-7fdac87fc000 rw-p 00000000 00:00 0 7fdac87fc000-7fdac87fd000 r--p 00022000 08:03 1313175 /lib64/ld-2.25.so 7fdac87fd000-7fdac87fe000 rw-p 00023000 08:03 1313175 /lib64/ld-2.25.so 7fdac87fe000-7fdac87ff000 rw-p 00000000 00:00 0 7ffd99d9c000-7ffd99dbd000 rw-p 00000000 00:00 0 [stack] 7ffd99dfb000-7ffd99dfe000 r--p 00000000 00:00 0 [vvar] 7ffd99dfe000-7ffd99e00000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.