I'm using mediatomb built from svn (2011-02-24) and whenever playback is started, mediatomb segfaults.
My original config.xml:
---snip---
<mark-played-items enabled="yes" suppress-cds-updates="yes">
<string mode="prepend">*</string>
</mark-played-items>
---snip---
I commented out the mark-played-items section and restarted mediatomb and everything works well.
I also looked through the code and tried changing the mark-played-items element to:
---snip---
<mark-played-items enabled="yes" suppress-cds-updates="yes">
<mark>
<content>video</content>
</mark>
<string mode="prepend">*</string>
</mark-played-items>
---snip---
and that fixed the issue. In the documenation, /server/extended-runtime-options/mark-played-items/mark is declared optional, but if it's missing, mediatomb segfaults.
My guess is that introducing a check at play_hook.cc:57 should fix the problem.
If it's needed, my entire old config.xml is available at <http://pastebin.com/15ieZfmy>
Here's the stack trace and all that good stuff:
---snip---
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffeec30700 (LWP 8905)]
0x000000000043df69 in ConfigManager::getStringArrayOption (this=0x814350, option=CFG_SERVER_EXTOPTS_MARK_PLAYED_ITEMS_CONTENT_LIST) at ../src/config_manager.cc:3177
3177 return options->get(option)->getStringArrayOption();
#######################################> list
3172 return options->get(option)->getDictionaryOption();
3173 }
3174
3175 Ref<Array<StringBase> > ConfigManager::getStringArrayOption(config_option_t option)
3176 {
3177 return options->get(option)->getStringArrayOption();
3178 }
3179
3180 Ref<ObjectDictionary<zmm::Object> > ConfigManager::getObjectDictionaryOption(config_option_t option)
3181 {
#######################################> backtrace
#0 0x000000000043df69 in ConfigManager::getStringArrayOption (this=0x814350, option=CFG_SERVER_EXTOPTS_MARK_PLAYED_ITEMS_CONTENT_LIST) at ../src/config_manager.cc:3177
#1 0x00000000005294a0 in PlayHook::trigger (this=0x9d5ba0, obj=...) at ../src/play_hook.cc:57
#2 0x0000000000521982 in FileRequestHandler::open (this=0xa65fb0, filename=0xa04fb0 "/content/media/object_id/9345/res_id/0/ext/file.mkv", info=0x7fffeec2f940, mode=UPNP_READ)
at ../src/file_request_handler.cc:739
#3 0x00000000004dd900 in web_open (filename=0xa04fb0 "/content/media/object_id/9345/res_id/0/ext/file.mkv", info=0x7fffeec2f940, mode=UPNP_READ) at ../src/web_callbacks.cc:198
#4 0x0000000000572a22 in process_request (req=0x7fffeec2fc70, rtype=0x7fffeec2fab4, headers=0x7fffeec2fa80, filename=0x7fffeec2fa60, alias=0x7fffeec2fa10, RespInstr=0x7fffeec2fac0, Fp=0x7fffeec2faa8)
at ../upnp/src/genlib/net/http/webserver.c:1343
#5 0x000000000057371a in web_server_callback (parser=0x7fffeec2fc70, req=0x7fffeec2fc70, info=0x7fffeec2fc30) at ../upnp/src/genlib/net/http/webserver.c:1804
#6 0x0000000000569078 in dispatch_request (info=0x7fffeec2fc30, hparser=0x7fffeec2fc70) at ../upnp/src/genlib/miniserver/miniserver.c:236
#7 0x000000000056921f in handle_request (args=0x8f5f70) at ../upnp/src/genlib/miniserver/miniserver.c:339
#8 0x000000000057c904 in WorkerThread (arg=0x80e2a0) at ../threadutil/src/ThreadPool.c:594
#9 0x00007ffff58509ca in start_thread () from /lib/libpthread.so.0
#10 0x00007ffff55ad70d in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()
#######################################> print options
$1 = {_ptr = 0x8140b0}
---snip---
I had this too.
Interestingly, it doesn't seem to occur when transcoding.
The above config change fixed it for me as well.