Bug 215999 - Dynamic playlist last.fm similar songs
Summary: Dynamic playlist last.fm similar songs
Status: RESOLVED DUPLICATE of bug 200546
Alias: None
Product: amarok
Classification: Applications
Component: general (show other bugs)
Version: 2.2.0
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Amarok Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-11-24 20:29 UTC by Arto Liuha
Modified: 2009-11-24 23:14 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arto Liuha 2009-11-24 20:29:13 UTC
Application that crashed: amarok
Version of the application: 2.2.0
KDE Version: 4.3.2 (KDE 4.3.2)
Qt Version: 4.5.2
Operating System: Linux 2.6.31-15-generic x86_64
Distribution: Ubuntu 9.10

What I was doing when the application crashed:
Put on the dynamic playlist. Changed the sog. Crash.

 -- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
[Current thread is 1 (Thread 0x7fb4d77f8770 (LWP 5268))]

Thread 18 (Thread 0x7fb4be5ff910 (LWP 5269)):
#0  0x00007fb4cf79582d in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a78c91 in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#3  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 17 (Thread 0x7fb4bd0b6910 (LWP 5270)):
#0  0x00007fb4d4f0c373 in poll () from /lib/libc.so.6
#1  0x00007fb4ce0cc36c in ?? () from /lib/libglib-2.0.so.0
#2  0x00007fb4ce0cc6b0 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#3  0x00007fb4d56251fe in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb4d55fb532 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb4d55fb904 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb4d55136cb in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb4c3cd356e in ?? () from /usr/lib/qt4/plugins/phonon_backend/phonon_xine.so
#8  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#10 0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 16 (Thread 0x7fb4bc6ab910 (LWP 5273)):
#0  0x00007fb4d4f0aa6b in read () from /lib/libc.so.6
#1  0x00007fb4c40daad5 in ?? () from /usr/lib/libasound.so.2
#2  0x00007fb4c40d5818 in snd_hctl_handle_events () from /usr/lib/libasound.so.2
#3  0x00007fb4c40df589 in snd_mixer_handle_events () from /usr/lib/libasound.so.2
#4  0x00007fb4bc6b1d04 in ?? () from /usr/lib/xine/plugins/1.26/xineplug_ao_out_alsa.so
#5  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#6  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 15 (Thread 0x7fb4bbeaa910 (LWP 5274)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a89983 in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#3  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7fb4bb206910 (LWP 5275)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a89983 in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#3  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7fb4baa05910 (LWP 5276)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a89983 in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#3  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7fb4b9317910 (LWP 5278)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4d55174fb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb4d21ca326 in ?? () from /usr/lib/libthreadweaver.so.4
#3  0x00007fb4d21cc45b in ?? () from /usr/lib/libthreadweaver.so.4
#4  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#5  0x00007fb4d21caa5f in ?? () from /usr/lib/libthreadweaver.so.4
#6  0x00007fb4d21caeb8 in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#7  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#9  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7fb4b1bdd910 (LWP 5279)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4d55174fb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb4d21ca326 in ?? () from /usr/lib/libthreadweaver.so.4
#3  0x00007fb4d21cc45b in ?? () from /usr/lib/libthreadweaver.so.4
#4  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#5  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#6  0x00007fb4d21caa5f in ?? () from /usr/lib/libthreadweaver.so.4
#7  0x00007fb4d21caeb8 in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#8  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#10 0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7fb4b13dc910 (LWP 5282)):
[KCrash Handler]
#5  Dynamic::BiasSolver::getRandomTrack (this=0x515f400, subset=...) at /build/buildd/amarok-2.2.0/src/dynamic/BiasSolver.cpp:733
#6  0x00007fb4d6c4cbf2 in Dynamic::BiasSolver::generateInitialPlaylist (this=0x515f400, optimal=<value optimized out>) at /build/buildd/amarok-2.2.0/src/dynamic/BiasSolver.cpp:709
#7  0x00007fb4d6c4eff7 in Dynamic::BiasSolver::run (this=0x515f400) at /build/buildd/amarok-2.2.0/src/dynamic/BiasSolver.cpp:172
#8  0x00007fb4d21cb75d in ?? () from /usr/lib/libthreadweaver.so.4
#9  0x00007fb4d21cba5e in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib/libthreadweaver.so.4
#10 0x00007fb4d21caa2f in ?? () from /usr/lib/libthreadweaver.so.4
#11 0x00007fb4d21caeb8 in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#12 0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#13 0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#14 0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#15 0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7fb4b0bdb910 (LWP 5283)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4d55174fb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb4d21ca326 in ?? () from /usr/lib/libthreadweaver.so.4
#3  0x00007fb4d21cc45b in ?? () from /usr/lib/libthreadweaver.so.4
#4  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#5  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#6  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#7  0x00007fb4d21cc474 in ?? () from /usr/lib/libthreadweaver.so.4
#8  0x00007fb4d21caa5f in ?? () from /usr/lib/libthreadweaver.so.4
#9  0x00007fb4d21caeb8 in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4
#10 0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#11 0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#12 0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#13 0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7fb4ada9f910 (LWP 5291)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4d55174fb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb4d63d343e in ?? () from /usr/lib/libQtGui.so.4
#3  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#5  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7fb4ad29e910 (LWP 5292)):
#0  0x00007fb4d4f0c373 in poll () from /lib/libc.so.6
#1  0x00007fb4ce0cc36c in ?? () from /lib/libglib-2.0.so.0
#2  0x00007fb4ce0cc6b0 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#3  0x00007fb4d56251fe in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb4d55fb532 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb4d55fb904 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb4d55136cb in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb4d55deb78 in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#10 0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7fb49a566910 (LWP 5320)):
#0  0x00007fb4d4f113c2 in select () from /lib/libc.so.6
#1  0x00007fb4c3aa1725 in xine_usec_sleep () from /usr/lib/libxine.so.1
#2  0x00007fb4c3a867e9 in ?? () from /usr/lib/libxine.so.1
#3  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#4  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7fb499d65910 (LWP 5321)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a7c54b in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4c3a8251d in ?? () from /usr/lib/libxine.so.1
#3  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#4  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7fb499564910 (LWP 5322)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a7c54b in ?? () from /usr/lib/libxine.so.1
#2  0x00007fb4c3a83555 in ?? () from /usr/lib/libxine.so.1
#3  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#4  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fb498d63910 (LWP 5323)):
#0  0x00007fb4cf7955a9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4c3a8ca0b in xine_event_wait () from /usr/lib/libxine.so.1
#2  0x00007fb4c3a8ca7e in ?? () from /usr/lib/libxine.so.1
#3  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#4  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fb49056b910 (LWP 5347)):
#0  0x00007fb4cf79582d in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb4d5517462 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb4d550d4f2 in ?? () from /usr/lib/libQtCore.so.4
#3  0x00007fb4d5516445 in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007fb4cf790a04 in start_thread () from /lib/libpthread.so.0
#5  0x00007fb4d4f187bd in clone () from /lib/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fb4d77f8770 (LWP 5268)):
#0  0x00007fb4d4f0c373 in poll () from /lib/libc.so.6
#1  0x00007fb4ccbd729a in ?? () from /usr/lib/libxcb.so.1
#2  0x00007fb4ccbd77d7 in ?? () from /usr/lib/libxcb.so.1
#3  0x00007fb4ccbd7a85 in xcb_writev () from /usr/lib/libxcb.so.1
#4  0x00007fb4d44d0d4a in _XSend () from /usr/lib/libX11.so.6
#5  0x00007fb4d44bd4b3 in ?? () from /usr/lib/libX11.so.6
#6  0x00007fb4d44bd65e in XPutImage () from /usr/lib/libX11.so.6
#7  0x00007fb4d5fedb3a in QX11PixmapData::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#8  0x00007fb4d5fdbec0 in QPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#9  0x00007fb4d6022b18 in QPaintEngine::drawImage(QRectF const&, QImage const&, QRectF const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#10 0x00007fb4d60cf3c2 in ?? () from /usr/lib/libQtGui.so.4
#11 0x00007fb4d6036b3e in ?? () from /usr/lib/libQtGui.so.4
#12 0x00007fb4d603dc1d in QPainter::drawRoundedRect(QRectF const&, double, double, Qt::SizeMode) () from /usr/lib/libQtGui.so.4
#13 0x00007fb4c9699e41 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#14 0x00007fb4c96a8c12 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#15 0x00007fb4d55fbf47 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#16 0x00007fb4d5f1cecc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#17 0x00007fb4d5f241ce in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#18 0x00007fb4d73aeab6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#19 0x00007fb4d55fcc2c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#20 0x00007fb4d5f72b93 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#21 0x00007fb4d5f732f0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#22 0x00007fb4d5f72803 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#23 0x00007fb4d60e4e1e in ?? () from /usr/lib/libQtGui.so.4
#24 0x00007fb4d5f64fa0 in QWidgetPrivate::syncBackingStore() () from /usr/lib/libQtGui.so.4
#25 0x00007fb4d5f6b5b8 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#26 0x00007fb4d62e19db in QMainWindow::event(QEvent*) () from /usr/lib/libQtGui.so.4
#27 0x00007fb4d5f1cefc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#28 0x00007fb4d5f241ce in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#29 0x00007fb4d73aeab6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#30 0x00007fb4d55fcc2c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#31 0x00007fb4d60e2317 in ?? () from /usr/lib/libQtGui.so.4
#32 0x00007fb4d60e54f6 in ?? () from /usr/lib/libQtGui.so.4
#33 0x00007fb4d5f66f1b in QWidget::repaint(QRect const&) () from /usr/lib/libQtGui.so.4
#34 0x00007fb4d5f66fe3 in QWidget::repaint() () from /usr/lib/libQtGui.so.4
#35 0x00007fb4d6a7375c in CompoundProgressBar::qt_metacall (this=0x10f5740, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffdb01d190)
    at /build/buildd/amarok-2.2.0/obj-x86_64-linux-gnu/src/moc_CompoundProgressBar.cpp:80
#36 0x00007fb4d5611ddc in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#37 0x00007fb4d6d4d591 in ProgressBar::percentageChanged (this=0x7fffdb018050, _t1=1) at /build/buildd/amarok-2.2.0/obj-x86_64-linux-gnu/src/ProgressBar.moc:113
#38 0x00007fb4d6a7714d in Dynamic::BiasedPlaylist::qt_metacall (this=0x1749400, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x4090e30)
    at /build/buildd/amarok-2.2.0/obj-x86_64-linux-gnu/src/moc_BiasedPlaylist.cpp:74
#39 0x00007fb4d560c0f9 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#40 0x00007fb4d5f1cefc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#41 0x00007fb4d5f241ce in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#42 0x00007fb4d73aeab6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#43 0x00007fb4d55fcc2c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#44 0x00007fb4d55fd80a in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#45 0x00007fb4d5625533 in ?? () from /usr/lib/libQtCore.so.4
#46 0x00007fb4ce0c8bbe in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#47 0x00007fb4ce0cc588 in ?? () from /lib/libglib-2.0.so.0
#48 0x00007fb4ce0cc6b0 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#49 0x00007fb4d56251a6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#50 0x00007fb4d5fb14be in ?? () from /usr/lib/libQtGui.so.4
#51 0x00007fb4d55fb532 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#52 0x00007fb4d55fb904 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#53 0x00007fb4d55fdab9 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#54 0x0000000000409ec6 in main (argc=<value optimized out>, argv=0x7fffdb01f838) at /build/buildd/amarok-2.2.0/src/main.cpp:225

This bug may be a duplicate of or related to bug 211923

Reported using DrKonqi
Comment 1 Myriam Schweingruber 2009-11-24 23:14:07 UTC
Already solved in Amarok 2.2.1

*** This bug has been marked as a duplicate of bug 200546 ***