Bug 225868

Summary: Amarok detect my ipod even if not mounted and think it's
Product: [Applications] amarok Reporter: Bruno Bigras <bigras.bruno>
Component: Collections/iPod iPhoneAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: normal CC: aikawarazuni, aumuell, matej
Priority: NOR    
Version: 2.3-GIT   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: initialize dialog

Description Bruno Bigras 2010-02-07 23:53:28 UTC
Version:           2.2-GIT (using Devel)
Compiler:          gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9) Target: x86_64-linux-gnu
OS:                Linux
Installed from:    Compiled sources

I plugged my ipod and normally Amarok only detects it when it's mounted. Today he did not, and he asked me to initialize it. I declined. Amarok works fine if I mount my ipod.
Comment 1 Bruno Bigras 2010-02-07 23:56:31 UTC
Created attachment 40598 [details]
initialize dialog

here's the "do you want to initialize your ipod" dialog. also note the I18N_ARGUMENT_MISSING thing.
Comment 2 Myriam Schweingruber 2010-02-08 01:18:33 UTC
Sorry, but why did you not ask it to be initialized? That's the whole point of this dialog, no?
Comment 3 Bruno Bigras 2010-02-08 01:27:04 UTC
(In reply to comment #2)
> Sorry, but why did you not ask it to be initialized? That's the whole point of
> this dialog, no?

Because I was afraid it was going to wipe my ipod's memory. And it worked perfectly once I mounted it.

I don't remember seeing Amarok detect my ipod when it's not mounted.
Comment 4 Myriam Schweingruber 2010-02-08 01:37:10 UTC
Well, it is a new feature brought in by this commit yesterday:
commit 7caac83e14c837e947231be208f1805d9879fddb

that's what you get when using the git version :) I still fail to see where there is a bug...
Comment 5 Bruno Bigras 2010-02-08 02:06:47 UTC
(In reply to comment #4)
> Well, it is a new feature brought in by this commit yesterday:
> commit 7caac83e14c837e947231be208f1805d9879fddb
> 
> that's what you get when using the git version :) I still fail to see where
> there is a bug...

I think the problem only occurs after I delete amarok's configs files.

Maybe it's a bug if Amarok thinks my ipod is not initialized even if it already is.

Or if when I agree to initialize my already initialized ipod, Amarok show an ipod with 0 songs but see all of my 457 songs as soon as I manually mount it.

Or if even after I did initialize it, Amarok still tells me it's not the next time I run it (after deleting the configs).

about the I18N_ARGUMENT_MISSING thing, should I open a bug report or something? there's also one when I mouse over the progress bar that show the space left on the device.
Comment 6 Martin Aumueller 2010-02-08 02:16:08 UTC
BTW, Seb is also seeing this problem:
"I recently saw this warning when starting amarok with my ipod plugged in:

http://imagebin.ca/view/ZwagUkAt.html

Now obviously that is wrong :). Everything seems okay when plugging in
the ipod after amarok has already started."

So, the problem happens if you have your iPod plugged in but did not mount it
before starting Amarok?
Comment 7 Bruno Bigras 2010-02-08 02:23:11 UTC
(In reply to comment #6)
> BTW, Seb is also seeing this problem:
> "I recently saw this warning when starting amarok with my ipod plugged in:
> 
> http://imagebin.ca/view/ZwagUkAt.html
> 
> Now obviously that is wrong :). Everything seems okay when plugging in
> the ipod after amarok has already started."
> 
> So, the problem happens if you have your iPod plugged in but did not mount it
> before starting Amarok?

Yes, it also happened while Amarok was already running and I plugged my ipod. I don't have automatic mounting on at the moment.
Comment 8 Bruno Bigras 2010-02-08 02:29:45 UTC
not sure if it could help but this is what happens before the "do you want to initialize the ipod" dialog shows.

bruno@t61p:~/.kde/share/config$ amarok --debug
amarok: BEGIN: App::App() 
amarok:   BEGIN: void App::continueInit() 
amarok:     BEGIN: EngineController::EngineController() 
amarok:       BEGIN: void EngineController::initializePhonon() 
amarok(22607)/kdecore (KSycoca) KSycocaPrivate::openDatabase: Trying to open ksycoca from  "/var/tmp/kdecache-bruno/ksycoca4"
amarok(22607) Phonon::KdePlatformPlugin::createBackend: using backend:  "Xine"
amarok:         [EngineController] Tick Interval (actual):  100 
amarok:       END__: void EngineController::initializePhonon() - Took 0.43s 
amarok:     END__: EngineController::EngineController() - Took 0.43s 
amarok:     BEGIN: MainWindow::MainWindow() 
amarok:       BEGIN: Playlist::Model::Model(QObject*) 
amarok:          BrowserCategoryList named  "internet"  starting... 
amarok:         BEGIN: BrowserCategoryListDelegate::BrowserCategoryListDelegate(QTreeView*) 
amarok:         END__: BrowserCategoryListDelegate::BrowserCategoryListDelegate(QTreeView*) - Took 0.0001s 
amarok:          We are sorting!! 
amarok:          ServiceBrowser starting... 
amarok:         BEGIN: void ServicePluginManager::collect() 
amarok:           [PluginManager] Plugin trader constraint:  "[X-KDE-Amarok-framework-version] == 52 and [X-KDE-Amarok-plugintype] == 'service' and [X-KDE-Amarok-rank] > 0" 
amarok:            Received [ "6" ] collection plugin offers 
amarok:           BEGIN: static Amarok::Plugin* PluginManager::createFromService(KSharedPtr<KService>) 
amarok:             [PluginManager] Trying to load:  "amarok_service_ampache" 
amarok:             BEGIN: void CollectionManager::init() 
amarok:               BEGIN: TimecodeTrackProvider::TimecodeTrackProvider() 
amarok:               END__: TimecodeTrackProvider::TimecodeTrackProvider() - Took 5.7e-05s 
amarok:               [PluginManager] Plugin trader constraint:  "[X-KDE-Amarok-framework-version] == 52 and [X-KDE-Amarok-plugintype] == 'collection' and [X-KDE-Amarok-rank] > 0" 
amarok:               [CollectionManager] Received [ "7" ] collection plugin offers 
amarok:               [CollectionManager] Initialising sqlcollection 
amarok:                Connected to MySQL server 5.1.37-1ubuntu5-embedded 
amarok:                Connected to MySQL server 5.1.37-1ubuntu5-embedded 
amarok:                Initialized thread, count== 1 
amarok:               BEGIN: void MountPointManager::init() 
amarok:                 [PluginManager] Plugin trader constraint:  "[X-KDE-Amarok-framework-version] == 52 and [X-KDE-Amarok-plugintype] == 'device' and [X-KDE-Amarok-rank] > 0" 
amarok:                 [MountPointManager] Received [ "1" ] device plugin offers 
amarok:                 BEGIN: static Amarok::Plugin* PluginManager::createFromService(KSharedPtr<KService>) 
amarok:                   [PluginManager] Trying to load:  "amarok_massstorage-device" 
amarok:                   [PluginManager] 
"                  " PluginManager Service Info: 
"                  " --------------------------- 
"                  " name                          : "Mass Storage Device" 
"                  " library                       : "amarok_massstorage-device" 
"                  " desktopEntryPath              : "amarok_massstorage-device.desktop" 
"                  " X-KDE-Amarok-plugintype       : "device" 
"                  " X-KDE-Amarok-name             : "massstorage-device" 
"                  " X-KDE-Amarok-authors          : ("Maximilian Kossick") 
"                  " X-KDE-Amarok-rank             : "100" 
"                  " X-KDE-Amarok-version          : "1" 
"                  " X-KDE-Amarok-framework-version: "52" 

amarok:                 END__: static Amarok::Plugin* PluginManager::createFromService(KSharedPtr<KService>) - Took 0.0013s 
amarok:                 [MountPointManager] Device added and mounted, checking handlers 
amarok:                 [MountPointManager] found handler for  "/org/freedesktop/Hal/devices/volume_uuid_E1C4_1E0C" 
amarok:                 BEGIN: virtual DeviceHandler* MassStorageDeviceHandlerFactory::createHandler(const Solid::Device&, const QString&) const 
amarok:                 END__: virtual DeviceHandler* MassStorageDeviceHandlerFactory::createHandler(const Solid::Device&, const QString&) const - Took 0.00019s 
amarok:                 [MountPointManager] Factory  "uuid" could not create device handler 
amarok:                 [MountPointManager] Device added and mounted, checking handlers 
amarok:                 [MountPointManager] found handler for  "/org/freedesktop/Hal/devices/volume_uuid_1da31f15_01d7_40d4_858f_07bfa66a34a7" 
amarok:                 BEGIN: virtual DeviceHandler* MassStorageDeviceHandlerFactory::createHandler(const Solid::Device&, const QString&) const 
amarok:                   [MassStorageDeviceHandler] Volume isn't valid, can't create a handler 
amarok:                 END__: virtual DeviceHandler* MassStorageDeviceHandlerFactory::createHandler(const Solid::Device&, const QString&) const - Took 9.6e-05s 
amarok:                 [MountPointManager] Factory  "uuid" could not create device handler 
amarok:                 [MountPointManager] Device added and mounted, checking handlers 
amarok:                 [MountPointManager] Device added and mounted, checking handlers 
amarok:               END__: void MountPointManager::init() - Took 0.024s 
amarok:               BEGIN: ScanManager::ScanManager(QObject*) 
amarok:                 BEGIN: SqlCollectionDBusHandler::SqlCollectionDBusHandler(QObject*) 
amarok:                    Register object:  true 
amarok:                 END__: SqlCollectionDBusHandler::SqlCollectionDBusHandler(QObject*) - Took 0.00016s 
amarok:               END__: ScanManager::ScanManager(QObject*) - Took 0.00029s 
amarok:               BEGIN: void CollectionManager::slotNewCollection(Amarok::Collection*) 
amarok:               END__: void CollectionManager::slotNewCollection(Amarok::Collection*) - Took 0.00016s 
amarok:               BEGIN: MediaDeviceMonitor::MediaDeviceMonitor() 
amarok:                 BEGIN: void MediaDeviceMonitor::init() 
amarok:                   BEGIN: MediaDeviceCache::MediaDeviceCache() 
amarok:                   END__: MediaDeviceCache::MediaDeviceCache() - Took 7.6e-05s 
amarok:                 END__: void MediaDeviceMonitor::init() - Took 0.00021s 
amarok:               END__: MediaDeviceMonitor::MediaDeviceMonitor() - Took 0.00032s 
amarok:               BEGIN: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) 
amarok:                 BEGIN: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) 
amarok:                   BEGIN: QStringList MediaDeviceMonitor::getDevices() 
amarok:                     BEGIN: void MediaDeviceCache::refreshCache() 
amarok:                       [MediaDeviceCache] Found Solid PMP that is also a StorageDrive, skipping 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_E1C4_1E0C" 
amarok:                       [MediaDeviceCache] Device name is =  "IPOD"  and was made by  "" 
amarok:                       [MediaDeviceCache] Solid device is not accessible, will wait until it is to consider it added. 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_part2_size_1024" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_1da31f15_01d7_40d4_858f_07bfa66a34a7" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (swap)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_4d2f4ccc_b9a4_4950_a9a3_912ebe415115" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (ext4)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                       [MediaDeviceCache] Device name is =  "iPod"  and was made by  "Apple" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                       [MediaDeviceCache] Device name is =  "DVDRAM GSA-U10N"  and was made by  "HL-DT-ST" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_HITACHI_HTS722016K9SA00_071027DP1D10DFG5335P" 
amarok:                       [MediaDeviceCache] Device name is =  "HITACHI HTS72201"  and was made by  "ATA" 
amarok:                     END__: void MediaDeviceCache::refreshCache() - Took 0.0079s 
amarok:                   END__: QStringList MediaDeviceMonitor::getDevices() - Took 0.008s 
amarok:                   BEGIN: virtual bool MtpConnectionAssistant::identify(const QString&) 
amarok:                      Not a PMP 
amarok:                   END__: virtual bool MtpConnectionAssistant::identify(const QString&) - Took 0.01s 
amarok:                   BEGIN: virtual bool MtpConnectionAssistant::identify(const QString&) 
amarok:                      Supported Protocols:  ("storage", "ipod") 
amarok:                   END__: virtual bool MtpConnectionAssistant::identify(const QString&) - Took 0.006s 
amarok:                   BEGIN: virtual bool MtpConnectionAssistant::identify(const QString&) 
amarok:                      Not a PMP 
amarok:                   END__: virtual bool MtpConnectionAssistant::identify(const QString&) - Took 0.00049s 
amarok:                   BEGIN: virtual bool MtpConnectionAssistant::identify(const QString&) 
amarok:                      Not a PMP 
amarok:                   END__: virtual bool MtpConnectionAssistant::identify(const QString&) - Took 0.00036s 
amarok:                 END__: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) - Took 0.026s 
amarok:               END__: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) - Took 0.026s 
amarok:               BEGIN: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) 
amarok:               END__: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) - Took 8.2e-05s 
amarok:               BEGIN: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) 
amarok:                 BEGIN: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) 
amarok:                   BEGIN: QStringList MediaDeviceMonitor::getDevices() 
amarok:                     BEGIN: void MediaDeviceCache::refreshCache() 
amarok:                       [MediaDeviceCache] Found Solid PMP that is also a StorageDrive, skipping 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_E1C4_1E0C" 
amarok:                       [MediaDeviceCache] Device name is =  "IPOD"  and was made by  "" 
amarok:                       [MediaDeviceCache] Solid device is not accessible, will wait until it is to consider it added. 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_part2_size_1024" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_1da31f15_01d7_40d4_858f_07bfa66a34a7" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (swap)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_4d2f4ccc_b9a4_4950_a9a3_912ebe415115" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (ext4)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                       [MediaDeviceCache] Device name is =  "iPod"  and was made by  "Apple" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                       [MediaDeviceCache] Device name is =  "DVDRAM GSA-U10N"  and was made by  "HL-DT-ST" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_HITACHI_HTS722016K9SA00_071027DP1D10DFG5335P" 
amarok:                       [MediaDeviceCache] Device name is =  "HITACHI HTS72201"  and was made by  "ATA" 
amarok:                     END__: void MediaDeviceCache::refreshCache() - Took 0.0023s 
amarok:                   END__: QStringList MediaDeviceMonitor::getDevices() - Took 0.0024s 
amarok:                   BEGIN: virtual bool AudioCdConnectionAssistant::identify(const QString&) 
amarok:                   END__: virtual bool AudioCdConnectionAssistant::identify(const QString&) - Took 0.00038s 
amarok:                   BEGIN: virtual bool AudioCdConnectionAssistant::identify(const QString&) 
amarok:                   END__: virtual bool AudioCdConnectionAssistant::identify(const QString&) - Took 0.00032s 
amarok:                   BEGIN: virtual bool AudioCdConnectionAssistant::identify(const QString&) 
amarok:                   END__: virtual bool AudioCdConnectionAssistant::identify(const QString&) - Took 0.00032s 
amarok:                   BEGIN: virtual bool AudioCdConnectionAssistant::identify(const QString&) 
amarok:                   END__: virtual bool AudioCdConnectionAssistant::identify(const QString&) - Took 6.1e-05s 
amarok:                 END__: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) - Took 0.0038s 
amarok:               END__: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) - Took 0.0039s 
amarok:               BEGIN: virtual void DaapCollectionFactory::init() 
amarok:               END__: virtual void DaapCollectionFactory::init() - Took 0.0032s 
amarok:               BEGIN: void MediaDeviceMonitor::registerDeviceType(ConnectionAssistant*) 
amarok:                 BEGIN: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) 
amarok:                   BEGIN: QStringList MediaDeviceMonitor::getDevices() 
amarok:                     BEGIN: void MediaDeviceCache::refreshCache() 
amarok:                       [MediaDeviceCache] Found Solid PMP that is also a StorageDrive, skipping 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_E1C4_1E0C" 
amarok:                       [MediaDeviceCache] Device name is =  "IPOD"  and was made by  "" 
amarok:                       [MediaDeviceCache] Solid device is not accessible, will wait until it is to consider it added. 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_part2_size_1024" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_1da31f15_01d7_40d4_858f_07bfa66a34a7" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (swap)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_4d2f4ccc_b9a4_4950_a9a3_912ebe415115" 
amarok:                       [MediaDeviceCache] Device name is =  "Volume (ext4)"  and was made by  "" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                       [MediaDeviceCache] Device name is =  "iPod"  and was made by  "Apple" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                       [MediaDeviceCache] Device name is =  "DVDRAM GSA-U10N"  and was made by  "HL-DT-ST" 
amarok:                       [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_HITACHI_HTS722016K9SA00_071027DP1D10DFG5335P" 
amarok:                       [MediaDeviceCache] Device name is =  "HITACHI HTS72201"  and was made by  "ATA" 
amarok:                     END__: void MediaDeviceCache::refreshCache() - Took 0.0026s 
amarok:                   END__: QStringList MediaDeviceMonitor::getDevices() - Took 0.0027s 
amarok:                   BEGIN: virtual bool IpodConnectionAssistant::identify(const QString&) 
amarok:                      Device udi:  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                      Device name:  "HL-DT-ST - DVDRAM GSA-U10N" 
amarok:                     BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                       [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                     END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00011s 
amarok:                      Mount point:  "" 
amarok:                      vendor:  "HL-DT-ST" , product:  "DVDRAM GSA-U10N" 
amarok:                   END__: virtual bool IpodConnectionAssistant::identify(const QString&) - Took 0.00042s 
amarok:                   BEGIN: virtual bool IpodConnectionAssistant::identify(const QString&) 
amarok:                      Device udi:  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                      Device name:  "Apple - iPod" 
amarok:                     BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                       [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                     END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 9.5e-05s 
amarok:                      Mount point:  "" 
amarok:                      vendor:  "Apple" , product:  "iPod" 
amarok:                      Supported protocols:  ("storage", "ipod") 
amarok:                      Supported drivers:  () 
amarok:                   END__: virtual bool IpodConnectionAssistant::identify(const QString&) - Took 0.00043s 
amarok:                   [MediaDeviceMonitor] Device identified with udi:  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                   BEGIN: virtual void ConnectionAssistant::tellIdentified(const QString&) 
amarok:                     BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                       [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                     END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 9.5e-05s 
amarok:                     BEGIN: IpodCollection::IpodCollection(MediaDeviceInfo*) 
amarok:                       [IpodCollection] Mounted at:  "" 
amarok:                       [IpodCollection] set mountpoint to  "/home/bruno/.kde/share/apps/amarok/tmp/imobiledevice" 
amarok:                       BEGIN: Meta::MediaDeviceHandler::MediaDeviceHandler(QObject*) 
amarok:                       END__: Meta::MediaDeviceHandler::MediaDeviceHandler(QObject*) - Took 8.7e-05s 
amarok(22607)/kdecore (kdelibs) KTempDir::create: KTempDir: Temporary directory created : "/tmp/kde-bruno/amarok9VimOK/"
amarok:                       BEGIN: Meta::IpodHandler::IpodHandler(IpodCollection*, const IpodDeviceInfo*) 
amarok:                       END__: Meta::IpodHandler::IpodHandler(IpodCollection*, const IpodDeviceInfo*) - Took 0.00033s 
amarok:                     END__: IpodCollection::IpodCollection(MediaDeviceInfo*) - Took 0.0048s 
amarok:                     [IpodHandler] Successfully mounted imobiledevice using ifuse on "/home/bruno/.kde/share/apps/amarok/tmp/imobiledevice" 
amarok:                     [IpodHandler] Calling the db parser 
amarok:                     [IpodHandler] There was an error, attempting to free db:  iTunes directory not found: '/home/bruno/.kde/share/apps/amarok/tmp/imobiledevice/iPod_Control/iTunes' (or similar). 
amarok:                     [MountPointManager] [WARNING!] NOT-IMPLEMENTED:  void MountPointManager::startStatisticsUpdateJob() 

amarok:                     BEGIN: XesamCollectionBuilder::XesamCollectionBuilder(SqlCollection*) 
amarok:                     END__: XesamCollectionBuilder::XesamCollectionBuilder(SqlCollection*) - Took 0.0037s 
amarok:                     BEGIN: void ScanManager::startFullScan() 
amarok:                       BEGIN: void ScanManager::checkTables(bool) 
amarok:                         BEGIN: void DatabaseUpdater::checkTables(bool) 
amarok:                         END__: void DatabaseUpdater::checkTables(bool) - Took 0.0057s 
amarok:                       END__: void ScanManager::checkTables(bool) - Took 0.0059s 
amarok:                       BEGIN: void ScanManager::cleanTables() 
amarok:                       END__: void ScanManager::cleanTables() - Took 0.0005s 
amarok:                       BEGIN: XmlParseJob::XmlParseJob(ScanManager*, SqlCollection*) 
amarok:                         BEGIN: void ProgressBar::setDescription(const QString&) 
amarok:                         END__: void ProgressBar::setDescription(const QString&) - Took 0.00011s 
amarok:                         BEGIN: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) 
amarok:                           BEGIN: void ProgressBar::setDescription(const QString&) 
amarok:                           END__: void ProgressBar::setDescription(const QString&) - Took 0.00012s 
amarok:                         END__: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) - Took 0.0017s 
amarok:                         BEGIN: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) 
amarok:                            Setting abort slot for  "Scanning music" 
amarok:                            connecting to  1abort() 
amarok:                         END__: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) - Took 0.0002s 
amarok:                       END__: XmlParseJob::XmlParseJob(ScanManager*, SqlCollection*) - Took 0.0031s 
amarok:                        Checking for batch file in  "/home/bruno/.kde/share/apps/amarok/amarokcollectionscanner_batchfullscan.xml" 
amarok:                       BEGIN: QStringList MountPointManager::collectionFolders() 
amarok:                       END__: QStringList MountPointManager::collectionFolders() - Took 0.00011s 
amarok:                       BEGIN: virtual void XmlParseJob::run() 
amarok:                       END__: void ScanManager::startFullScan() - Took 0.014s 
amarok:                       BEGIN: virtual int App::newInstance() 
amarok:                         BEGIN: static void App::handleCliArgs() 
amarok:                         END__: static void App::handleCliArgs() - Took 0.00015s 
amarok:                       END__: virtual int App::newInstance() - Took 0.0003s 
amarok:                        Success. Committing result to database. 
amarok:                        Database temporary table setup did not complete due to no directories needing to be processed. 
amarok:                     END__: virtual void XmlParseJob::run() - Took 0.13s 
amarok:                     BEGIN: virtual XmlParseJob::~XmlParseJob() 
amarok:                       BEGIN: void CompoundProgressBar::childBarComplete(ProgressBar*) 
amarok:                         BEGIN: void StatusBar::hideProgress() 
amarok:                         END__: void StatusBar::hideProgress() - Took 8.9e-05s 
amarok:                       END__: void CompoundProgressBar::childBarComplete(ProgressBar*) - Took 0.00053s 
amarok:                     END__: virtual XmlParseJob::~XmlParseJob() - Took 0.00065s 
amarok:                     BEGIN: void ScanManager::slotFinished() 
amarok:                     END__: void ScanManager::slotFinished() - Took 9.1e-05s 
bruno@t61p:~/.kde/share/config$ amarok:                     BEGIN: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) 
amarok:                       BEGIN: QStringList MediaDeviceMonitor::getDevices() 
amarok:                         BEGIN: void MediaDeviceCache::refreshCache() 
amarok:                           [MediaDeviceCache] Found Solid PMP that is also a StorageDrive, skipping 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_E1C4_1E0C" 
amarok:                           [MediaDeviceCache] Device name is =  "IPOD"  and was made by  "" 
amarok:                           [MediaDeviceCache] Solid device is not accessible, will wait until it is to consider it added. 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_part2_size_1024" 
amarok:                           [MediaDeviceCache] Device name is =  "Volume"  and was made by  "" 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_1da31f15_01d7_40d4_858f_07bfa66a34a7" 
amarok:                           [MediaDeviceCache] Device name is =  "Volume (swap)"  and was made by  "" 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageAccess with udi =  "/org/freedesktop/Hal/devices/volume_uuid_4d2f4ccc_b9a4_4950_a9a3_912ebe415115" 
amarok:                           [MediaDeviceCache] Device name is =  "Volume (ext4)"  and was made by  "" 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                           [MediaDeviceCache] Device name is =  "iPod"  and was made by  "Apple" 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                           [MediaDeviceCache] Device name is =  "DVDRAM GSA-U10N"  and was made by  "HL-DT-ST" 
amarok:                           [MediaDeviceCache] Found Solid::DeviceInterface::StorageDrive with udi =  "/org/freedesktop/Hal/devices/storage_serial_HITACHI_HTS722016K9SA00_071027DP1D10DFG5335P" 
amarok:                           [MediaDeviceCache] Device name is =  "HITACHI HTS72201"  and was made by  "ATA" 
amarok:                         END__: void MediaDeviceCache::refreshCache() - Took 0.0057s 
amarok:                       END__: QStringList MediaDeviceMonitor::getDevices() - Took 0.006s 
amarok:                       BEGIN: virtual bool UmsConnectionAssistant::identify(const QString&) 
amarok:                          Device udi:  "/org/freedesktop/Hal/devices/storage_model_DVDRAM_GSA_U10N" 
amarok:                          Device name:  "HL-DT-ST - DVDRAM GSA-U10N" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                           [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00033s 
amarok:                          Mount point:  "" 
amarok:                          vendor:  "HL-DT-ST" , product:  "DVDRAM GSA-U10N" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                           [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00031s 
amarok:                       END__: virtual bool UmsConnectionAssistant::identify(const QString&) - Took 0.0071s 
amarok:                       [MediaDeviceMonitor] Device already identified with udi:  "/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000A27001B061614_0_0" 
amarok:                       BEGIN: virtual bool UmsConnectionAssistant::identify(const QString&) 
amarok:                          Device udi:  "/org/freedesktop/Hal/devices/storage_serial_HITACHI_HTS722016K9SA00_071027DP1D10DFG5335P" 
amarok:                          Device name:  "ATA - HITACHI HTS72201" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                           [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00034s 
amarok:                          Mount point:  "" 
amarok:                          vendor:  "ATA" , product:  "HITACHI HTS72201" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                           [MediaDeviceCache] Not able to convert to StorageAccess or not accessible, returning empty 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00031s 
amarok:                       END__: virtual bool UmsConnectionAssistant::identify(const QString&) - Took 0.0054s 
amarok:                       BEGIN: virtual bool UmsConnectionAssistant::identify(const QString&) 
amarok:                          Device udi:  "/org/freedesktop/Hal/devices/volume_uuid_4d2f4ccc_b9a4_4950_a9a3_912ebe415115" 
amarok:                          Device name:  "/" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00024s 
amarok:                          Mount point:  "/" 
amarok:                          vendor:  "" , product:  "Volume (ext4)" 
amarok:                         BEGIN: const QString MediaDeviceCache::volumeMountPoint(const QString&) const 
amarok:                         END__: const QString MediaDeviceCache::volumeMountPoint(const QString&) const - Took 0.00022s 
amarok:                       END__: virtual bool UmsConnectionAssistant::identify(const QString&) - Took 0.0015s 
amarok:                     END__: void MediaDeviceMonitor::checkDevicesFor(ConnectionAssistant*) - Took 0.021s 
amarok:                     BEGIN: void DaapCollectionFactory::connectToManualServers() 
amarok:                     END__: void DaapCollectionFactory::connectToManualServers() - Took 0.00019s
Comment 9 Martin Aumueller 2010-02-08 03:10:54 UTC
It seems you have 'ifuse' installed on your system. This is what probably happens: ifuse returns a 0 (= successful) exit code even if there is no iphone/ipod touch. And this tricks Amarok into thinking that an ipod was successfully mounted. In fact it's just seeing an empty directory, which it asks to initialize as an ipod.
Comment 10 Bruno Bigras 2010-02-08 03:21:08 UTC
(In reply to comment #9)
> It seems you have 'ifuse' installed on your system. This is what probably
> happens: ifuse returns a 0 (= successful) exit code even if there is no
> iphone/ipod touch. And this tricks Amarok into thinking that an ipod was
> successfully mounted. In fact it's just seeing an empty directory, which it
> asks to initialize as an ipod.

I don't have the ifuse package also 'locate ifuse' and 'which ifuse' return nothing.

I have those packages : fuse-utils libfuse-dev libfuse2 libntfs-3g54 ntfs-3g
Comment 11 Martin Aumueller 2010-02-08 04:22:17 UTC
commit 23c047726df82db1b78faa95d85cabd4410b6c19
Author: Martin Aumüller <aumuell@reserv.at>
Date:   Mon Feb 8 03:24:43 2010 +0100

    better error handling during ifuse/fusermount calls
    CCBUG: 225868

diff --git a/src/collection/ipodcollection/handler/IpodHandler.cpp b/src/collection/ipodcollection/handler/IpodHandler.cpp
index 01d72f4..ffb4d84 100644
--- a/src/collection/ipodcollection/handler/IpodHandler.cpp
+++ b/src/collection/ipodcollection/handler/IpodHandler.cpp
@@ -118,17 +118,43 @@ IpodHandler::~IpodHandler()
     if ( m_itdb )
         itdb_free( m_itdb );
 
-    if( !m_deviceInfo->wasMounted() && !m_deviceInfo->mountPoint().isEmpty())
+    if( m_autoConnect )
     {
-        int result = QProcess::execute("fusermount -u " + mountPoint());
-        if( result )
+        QProcess unmount;
+        QStringList args;
+        args << "-u" << mountPoint();
+        unmount.start("fusermount", args);
+        bool ok = unmount.waitForStarted();
+        if( !ok )
         {
-            debug() << "Unmounting imobiledevice using ifuse from" << mountPoint() << "failed";
+            debug() << "fusermount for unmounting" << mountPoint() << "failed to start";
         }
         else
         {
+            ok = unmount.waitForFinished();
+            if( !ok )
+                debug() << "fusermount did not terminate correctly";
+        }
+        if( ok )
+        {
+            ok = unmount.exitStatus() == QProcess::NormalExit;
+            if( !ok )
+                debug() << "fusermount did not exit normally";
+        }
+        if( ok )
+        {
+            ok = unmount.exitCode() == 0;
+            if( !ok )
+                debug() << "fusermount did not exit successfully";
+        }
+        if( ok )
+        {
             debug() << "Unmounted imobiledevice using ifuse from" << mountPoint();
         }
+        else
+        {
+            debug() << "Unmounting imobiledevice using ifuse from" << mountPoint() << "failed";
+        }
     }
 }
 
@@ -138,23 +164,47 @@ IpodHandler::init()
     bool isMounted = m_deviceInfo->wasMounted();
     if ( !isMounted )
     {
-        int result = -1;
-        if( m_deviceInfo->deviceUid().isEmpty() )
+        QStringList args;
+        if( !m_deviceInfo->deviceUid().isEmpty() )
+        {
+            args << "--uuid";
+            args << m_deviceInfo->deviceUid();
+        }
+        args << mountPoint();
+        QProcess ifuse;
+        ifuse.start("ifuse", args);
+        bool ok = ifuse.waitForStarted();
+        if( !ok )
         {
-            result = QProcess::execute(QString("ifuse " + mountPoint()));
+            debug() << "Failed to start ifuse";
         }
         else
         {
-            result = QProcess::execute(QString("ifuse --uuid" + m_deviceInfo->deviceUid() + " " + mountPoint()));
+            ok = ifuse.waitForFinished();
+            if( !ok )
+                debug() << "ifuse did not yet terminate";
         }
-        if (result)
+        if( ok )
         {
-            debug() << "Mounting imobiledevice using ifuse on" << mountPoint() << "failed";
+            ok = ifuse.exitStatus() == QProcess::NormalExit;
+            if( !ok )
+                debug() << "ifuse crashed";
         }
-        else
+        if( ok )
+        {
+            ok = ifuse.exitCode() == 0;
+            if( !ok )
+                debug() << "ifuse exited with non-zero exit code";
+        }
+
+        if( ok )
         {
-            debug() << "Successfully mounted imobiledevice using ifuse on" << mountPoint();
             isMounted = true;
+            debug() << "Successfully mounted imobiledevice using ifuse on" << mountPoint();
+        }
+        else
+        {
+            debug() << "Mounting imobiledevice using ifuse on" << mountPoint() << "failed";
         }
     }
 
@@ -165,6 +215,8 @@ IpodHandler::init()
         return;
     }
 
+    m_autoConnect = !m_deviceInfo->wasMounted();
+
     GError *err = 0;
     QString initError = i18n( "iPod was not initialized:" );
     QString initErrorCaption = i18n( "iPod Initialization Failed" );
Comment 12 Martin Aumueller 2010-02-08 04:30:00 UTC
Thank you for helping in debugging this!

The new code was not detecting correctly that ifuse was not executed at all and instead assumed that it ran with success. This should now be fixed and you should not see any difference to the former state.
Comment 13 Bruno Bigras 2010-02-08 04:47:53 UTC
The problem seems to be gone now, thanks Martin and Myriam!

Keep up the good work.
Comment 14 Martin Aumueller 2010-02-10 01:57:28 UTC
commit 23c047726df82db1b78faa95d85cabd4410b6c19
Author: Martin Aumüller <aumuell@reserv.at>
Date:   Mon Feb 8 03:24:43 2010 +0100

    better error handling during ifuse/fusermount calls
    CCBUG: 225868

diff --git a/src/collection/ipodcollection/handler/IpodHandler.cpp b/src/collection/ipodcollection/handler/IpodHandler.cpp
index 01d72f4..ffb4d84 100644
--- a/src/collection/ipodcollection/handler/IpodHandler.cpp
+++ b/src/collection/ipodcollection/handler/IpodHandler.cpp
@@ -118,17 +118,43 @@ IpodHandler::~IpodHandler()
     if ( m_itdb )
         itdb_free( m_itdb );
 
-    if( !m_deviceInfo->wasMounted() && !m_deviceInfo->mountPoint().isEmpty())
+    if( m_autoConnect )
     {
-        int result = QProcess::execute("fusermount -u " + mountPoint());
-        if( result )
+        QProcess unmount;
+        QStringList args;
+        args << "-u" << mountPoint();
+        unmount.start("fusermount", args);
+        bool ok = unmount.waitForStarted();
+        if( !ok )
         {
-            debug() << "Unmounting imobiledevice using ifuse from" << mountPoint() << "failed";
+            debug() << "fusermount for unmounting" << mountPoint() << "failed to start";
         }
         else
         {
+            ok = unmount.waitForFinished();
+            if( !ok )
+                debug() << "fusermount did not terminate correctly";
+        }
+        if( ok )
+        {
+            ok = unmount.exitStatus() == QProcess::NormalExit;
+            if( !ok )
+                debug() << "fusermount did not exit normally";
+        }
+        if( ok )
+        {
+            ok = unmount.exitCode() == 0;
+            if( !ok )
+                debug() << "fusermount did not exit successfully";
+        }
+        if( ok )
+        {
             debug() << "Unmounted imobiledevice using ifuse from" << mountPoint();
         }
+        else
+        {
+            debug() << "Unmounting imobiledevice using ifuse from" << mountPoint() << "failed";
+        }
     }
 }
 
@@ -138,23 +164,47 @@ IpodHandler::init()
     bool isMounted = m_deviceInfo->wasMounted();
     if ( !isMounted )
     {
-        int result = -1;
-        if( m_deviceInfo->deviceUid().isEmpty() )
+        QStringList args;
+        if( !m_deviceInfo->deviceUid().isEmpty() )
+        {
+            args << "--uuid";
+            args << m_deviceInfo->deviceUid();
+        }
+        args << mountPoint();
+        QProcess ifuse;
+        ifuse.start("ifuse", args);
+        bool ok = ifuse.waitForStarted();
+        if( !ok )
         {
-            result = QProcess::execute(QString("ifuse " + mountPoint()));
+            debug() << "Failed to start ifuse";
         }
         else
         {
-            result = QProcess::execute(QString("ifuse --uuid" + m_deviceInfo->deviceUid() + " " + mountPoint()));
+            ok = ifuse.waitForFinished();
+            if( !ok )
+                debug() << "ifuse did not yet terminate";
         }
-        if (result)
+        if( ok )
         {
-            debug() << "Mounting imobiledevice using ifuse on" << mountPoint() << "failed";
+            ok = ifuse.exitStatus() == QProcess::NormalExit;
+            if( !ok )
+                debug() << "ifuse crashed";
         }
-        else
+        if( ok )
+        {
+            ok = ifuse.exitCode() == 0;
+            if( !ok )
+                debug() << "ifuse exited with non-zero exit code";
+        }
+
+        if( ok )
         {
-            debug() << "Successfully mounted imobiledevice using ifuse on" << mountPoint();
             isMounted = true;
+            debug() << "Successfully mounted imobiledevice using ifuse on" << mountPoint();
+        }
+        else
+        {
+            debug() << "Mounting imobiledevice using ifuse on" << mountPoint() << "failed";
         }
     }
 
@@ -165,6 +215,8 @@ IpodHandler::init()
         return;
     }
 
+    m_autoConnect = !m_deviceInfo->wasMounted();
+
     GError *err = 0;
     QString initError = i18n( "iPod was not initialized:" );
     QString initErrorCaption = i18n( "iPod Initialization Failed" );