Nasty bug in 2.4.0.

I'm sorry to inform that 2.4.0 has a quite big bug that prevents it from playing MPC files and files supported by libsndfile (wave, aiff, etc.). You will also hear noise if you are using a big-endian box (like PPC). This was discovered by Elimar Riesebieter, he tests MOC better than me :). To fix it, you can apply the patch.


2.4.0: a bit delayed, but released

2.4.0 release was delayed a bit, but here it is. This release adds custom main window layout, UTF-8 (that wasn't as easy as I thought and is not perfect), WMA, executing external commands, cache for tags, and more. The full list of changes is here.

2.4.0-beta2: the final beta release

This is the last beta release for 2.4.0 version. It contains fixes for few bugs and few new minor features. Most important changes are fixes for displaying non-ASCII characters. Thanks to people who reported bugs.

Full list of changes:

  • Workaround for encoding of ID3v1 tags. New options: UseRCC - to use librcc for ID3v1 reencoding, ID3v1TagsEncoding - assumed encoding for ID3v1 tags.
  • Added UseCursorSelection option (default: no) to display cursor on the selected file. This is useful with braille displays.
  • Added SetXtermTitle option (disable/enable setting xterm title).
  • Fixed displaying menu title that contains non-ASCII characters.
  • Fixed next/previous commands when the position of the current file has changed.
  • Fixed segfault when adding URLs to the playlist using the -a command line option.
  • Fixed compilation with ffmpeg-config (--plugin-libs instead of --libs).
  • wcswidth() is required to compile MOC.

2.4.0-beta1 released

2.4.0-beta1 has been just released. All features planed for 2.4.0 are implemented. Please test it.

New features:

  • Added m4a and aac to the list of extensions supported by ffmpeg.
  • Pressing n when nothing is played starts playing from the first item on the playlist.
  • A and --append can add files from playlists.
  • Selecting themes at runtime - T command (this does not change the config file).
  • Interface show the playlist after startup if something from the playlist is played (CanStartInPlaylist option).
  • Internet streams can be paused.
  • Reencoding id3 tags (mp3) using librcc. Initial patch by Alexey Gladkov.
  • Executing external commands, like 'cp %f /mnt/usb_drive' where %f is substituted with the path to the currently selected file.
  • Ogg plugin name was changed to vorbis.
  • Added RPM SPEC file. (Fredrik Rambris)

Reporting bugs

Since I sometimes receive a bug report that is unusable for me or lacks important information, this short text should help people who aren't sure how to report a bug. Good, but longer and more general description of a bug reporting is How to Report Bugs Effectively.

Most important thing: Please report bugs!. Users are the best testers, especially in Open Source world.

It doesn't work is not enough

If you installed MOC and after typing ./mocp the programm crashes, it's not enough just say it crashes after startup. I really run my programs before releasing a new version, there must be something with your system or MOC config. You must at least report your operating system name and version, but in most cases it's still not enough.

First, make sure that the old version of MOC is not running, it's often a cause of an error at startup. It's easy to forget that you run MOC because no interface could be visible, only the server. Use ps ax | grep mocp to see if MOC is running.

Basic information

Basic information that are usefull in most cases:

  • Your operating system name and version.
  • MOC version (users often forget to say which version they are using).
  • How did you get MOC - from sources or from a package.


MOC can create logs which are sometimes useful when reporting a bug. Just run MOC with --debug (or -D) option and two files will be created: mocp_server_log and mocp_server_log. Remember to shut down the server before doing this to get the server log (SHIFT-Q command or mocp -x).
You can include them with your bug report, but first compress them, preferably with bzip2 -9.

Logs could contain list of your files with tags and Internet radios URLs you played, remember this if you think it's sensitive information.

Simple things you can do to find the cause of a bug

  • Try moving your ~/.moc directory elsewhere, there can be something in your configuration file or the playlist that causes the crash.
  • The crash can be caused by one of your files, even you haven't played. Maybe there is a file which causes a crash when appears on the playlist? Try to find this file.


This is very useful after you get a segmentation fault or assertion failed. In such situation a core file is created. Some distributions disable dumping cores by default (like Slackware), type ulimit -c, if it displays 0, core files will not be create. In this case use ulimit -c 10000 to get core dumps in your session (in the terminal/console you used the ulimit command).

If you have a core file, you must have gdb to get a backtrace, this is an example:

daper@amd:~$ mocp
Running the server...
Trying JACK...
Trying ALSA...
Segmentation fault (core dumped)

daper@amd:~$ gdb mocp core

GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/".

Core was generated by `./mocp'.
Program terminated with signal 11, Segmentation fault.

[ ...more messages from GDB... ]

(gdb) bt
#0  0x08063a70 in main_win_init (w=0xbf94f074,
    layout_fmt=0x80b6130 "playlist:0,0,100%,100% directory:0,0,100%,100%")
    at interface_elements.c:818
#1  0x08066c76 in validate_layouts () at interface_elements.c:1948
#2  0x08069aa0 in windows_init () at interface_elements.c:2942
#3  0x0805e694 in init_interface (sock=3, logging=0, args=0xbf94f428,
    arg_num=0) at interface.c:1372
#4  0x080552a5 in start_moc (params=0xbf94f184, args=0xbf94f428, arg_num=0)
    at main.c:188
#5  0x08055c95 in main (argc=1, argv=0xbf94f424) at main.c:548

In this example a core file was dumped, user issued gdb mocp core command and then in gdb used bt to get the backtrace. The text you should include in your bug report is after (gdb) bt.

Fedora packages

Fredrik Rambris made Fedora packages, you can download them from


2.3.3 release: minor bug fixes.

MOC 2.3.3 was released today. It contains few fixes to bugs found in the previous release. The full list is here. In short: few memory leaks were fixed, workaround for the problem with the backspace key on many terminals was added, and problems with compilation on OpenBSD were fixed (mostly by Tilo Stritzky).

librcc support

Alexey Gladkov wrote a patch for librcc support. This fixes encoding problems with many id3tag files. See the patches section.



Subscribe to MOC - music on console RSS