iDVD and MultiMediaImporter.oxygene

The Perian forums have moved to Google Groups, this forum is read only.
sparky672
Harmless
Posts: 6
Joined: Wed Sep 30, 2009 6:14 pm

iDVD and MultiMediaImporter.oxygene

Postby sparky672 » Sun May 23, 2010 3:29 am

When I click on the Scene Selection menu in my latest iDVD project, a folder named "MultiMediaImporter.oxygene" bounces in the dock for 30 seconds and stops responding. It goes away when quitting iDVD. It does not seem to affect the performance of iDVD or anything else.

UN-installing Perian cures this weird little problem.

Installing Perian brings the problem back.

I had the latest version of Perian installed. Searching the Apple forum for "MultiMediaImporter.oxygene" yields lots of guessing with no single solution but Perian is definitely one of the causes as I've proven with my setup.

I'm hoping an update of Perian will fix this.

Thank-you.

gbooker
Cocoaforge Admin
Posts: 723
Joined: Sat May 06, 2006 2:47 am
Contact:

Re: iDVD and MultiMediaImporter.oxygene

Postby gbooker » Sun May 23, 2010 2:07 pm

Post a sample or nothing will ever change.

Also, be sure you removed the "obsolete components" listed on our website as many of these have proven bugs.

sparky672
Harmless
Posts: 6
Joined: Wed Sep 30, 2009 6:14 pm

Re: iDVD and MultiMediaImporter.oxygene

Postby sparky672 » Sun May 23, 2010 3:26 pm

gbooker wrote:Also, be sure you removed the "obsolete components" listed on our website as many of these have proven bugs.


Removed several obsolete components. No difference... problem remains as long as Perian is installed.

gbooker wrote:Post a sample or nothing will ever change.


Sample follows...

Code: Select all

Sampling process 16096 for 3 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Analysis of sampling MediaServer (pid 16096) every 1 millisecond
Call graph:
    929 Thread_2507
      929 0x1ef5
        929 0x1fce
          929 0x2e80
            929 CFRunLoopRun
              929 CFRunLoopRunSpecific
                928 mach_msg
                  927 mach_msg_trap
                    927 mach_msg_trap
                  1 mach_msg
                1 __CFRunLoopTimerRescheduleWithAllModes
                  1 mk_timer_arm
                    1 mk_timer_arm
    929 Thread_2603
      929 thread_start
        929 _pthread_start
          929 ReadSchedulerThreadEntryPoint
            929 TSWaitOnSemaphoreCommon
              929 TSWaitOnConditionTimedRelative
                929 pthread_cond_timedwait_relative_np
                  929 _pthread_cond_wait
                    929 semaphore_timedwait_signal_trap
                      929 semaphore_timedwait_signal_trap
    929 Thread_2703
      929 thread_start
        929 _pthread_start
          929 CAPThread::Entry(CAPThread*)
            929 HALRunLoop::OwnThread(void*)
              929 CFRunLoopRunInMode
                929 CFRunLoopRunSpecific
                  929 mach_msg
                    929 mach_msg_trap
                      929 mach_msg_trap
    929 Thread_2803
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2903
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2a03
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2b03
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2c03
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2d03
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2e03
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_2f03
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3003
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3103
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3203
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3303
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3403
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3503
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3603
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3703
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3803
      929 thread_start
        929 _pthread_start
          929 JVTCompEncodeFrame
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap
    929 Thread_3903
      929 thread_start
        929 _pthread_start
          929 JVTLibDecoDispose
            929 JVTCompEncodeFrame
              929 semaphore_wait_trap
                929 semaphore_wait_trap

Total number in stack (recursive counted multiple, when >=5):
        27       JVTCompEncodeFrame
        20       _pthread_start
        20       thread_start
        18       semaphore_wait_trap
        9       JVTLibDecoDispose

Sort by top of stack, same collapsed (when >= 5):
        semaphore_wait_trap        16722
        mach_msg_trap        1856
        semaphore_timedwait_signal_trap        929
Sample analysis of process 16096 written to file /dev/stdout

gbooker
Cocoaforge Admin
Posts: 723
Joined: Sat May 06, 2006 2:47 am
Contact:

Re: iDVD and MultiMediaImporter.oxygene

Postby gbooker » Sun May 23, 2010 7:51 pm

None of that code is in Perian, so you'd be hard pressed to say it is Perian's fault. Most of the time is spent in threads waiting inside of JVTCompEncodeFrame, which is not Perian.

sparky672
Harmless
Posts: 6
Joined: Wed Sep 30, 2009 6:14 pm

Re: iDVD and MultiMediaImporter.oxygene

Postby sparky672 » Sun May 23, 2010 8:21 pm

gbooker wrote:None of that code is in Perian, so you'd be hard pressed to say it is Perian's fault.


You should note that this is not some weird intermittent condition where I merely suspect Perian plays some role. This problem is 100% repeatable and 100% eliminated with Perian's deactivation.

I can tell you with absolute certainty...

1. when Perian is UN-installed it works EVERY single time.
2. when Perian is installed, it fails EVERY single time.

There is no doubt about item 1 & 2 above... I can toggle Perian on/off all day long and the problem as I've described toggles right along with 100% reliability.

gbooker wrote:Most of the time is spent in threads waiting inside of JVTCompEncodeFrame, which is not Perian.


Is it even slightly possible that Perian is causing something to happen within JVTCompEncodeFrame? Or Perian is causing something to happen within something else that is causing JVTCompEncodeFrame to fail?

Mr VacBob
Crema
Posts: 330
Joined: Thu Jan 04, 2007 11:14 pm
Contact:

Re: iDVD and MultiMediaImporter.oxygene

Postby Mr VacBob » Sun May 23, 2010 11:14 pm

JVTCompEncode/Decode just means "the QuickTime H.264 decoder is open".

I have a feeling this isn't an ongoing problem (that would be seen in a profiler), but more that something's happening which causes the system to think the MultiMediaImporter.oxygene bundle is an app. Which it actually seems to be, with that MediaServer process in there.

Hmm… maybe we need to blacklist version checking in that process? But I don't think that would run every time.

BTW Perian doesn't get tested much with iDVD. If you drag an MKV file over it the whole app freezes for several minutes. Unfortunately I think it's iDVD's fault (it tries to import movies on the UI thread) and I can't really think of what to do about it.

gbooker
Cocoaforge Admin
Posts: 723
Joined: Sat May 06, 2006 2:47 am
Contact:

Re: iDVD and MultiMediaImporter.oxygene

Postby gbooker » Sun May 23, 2010 11:28 pm

sparky672 wrote:You should note that this is not some weird intermittent condition where I merely suspect Perian plays some role. This problem is 100% repeatable and 100% eliminated with Perian's deactivation.

And that is not a 100% conclusion that Perian is at fault. The fact that none of Perian's code shows up in the sample is evidence against it. Another such explanation is that the thing breaks if there's more than one H.264 decoder available to QT. This fits all the evidence better than it being Perian's fault. Another is that various applications enumerate H.264 decoders at different rates with this one being run for short durations and that a particular decoder has a fit if it's used by more than one application (see supposition below).

Mr VacBob wrote:maybe we need to blacklist version checking in that process?

If it were the update checker, we'd see it in the sample. The only thing I see is the QT H.264 decoder, which appears to be waiting on something. Maybe the hardware decoder in the video card perhaps?

sparky672
Harmless
Posts: 6
Joined: Wed Sep 30, 2009 6:14 pm

Re: iDVD and MultiMediaImporter.oxygene

Postby sparky672 » Mon May 24, 2010 12:50 am

gbooker wrote:
sparky672 wrote:You should note that this is not some weird intermittent condition where I merely suspect Perian plays some role. This problem is 100% repeatable and 100% eliminated with Perian's deactivation.

And that is not a 100% conclusion that Perian is at fault. The fact that none of Perian's code shows up in the sample is evidence against it.


I would tend to agree but I don't recall making an argument one way or the other... merely stating the fact that the problem goes away when Perian is deactivated. I really do not care what is to blame, only to find some solution.

Since the fact remains that the problem only occurs when Perian is installed, coming here in an attempt to contribute something constructive seemed like a good starting point. From what I've seen at the Apple forum, others also are reporting similar observations.

If you're interested in getting to the bottom of this problem, I'd be very happy to provide whatever details you require.

Right now I am extremely curious about the real root cause and how the activation of Perian triggers it.

Thank-you.

Mr VacBob
Crema
Posts: 330
Joined: Thu Jan 04, 2007 11:14 pm
Contact:

Re: iDVD and MultiMediaImporter.oxygene

Postby Mr VacBob » Wed May 26, 2010 10:56 pm

gbooker wrote:
Mr VacBob wrote:maybe we need to blacklist version checking in that process?

If it were the update checker, we'd see it in the sample. The only thing I see is the QT H.264 decoder, which appears to be waiting on something. Maybe the hardware decoder in the video card perhaps?


It doesn't have to show up in the sample.

Intended behavior:
MediaServer starts up as a background process and runs the QT H.264 codec for 30 seconds, doing whatever it does.

Unintended behavior:
MediaServer starts up as a background process. It calls Perian, which calls some system library, which calls an API that turns it into an app (so it shows in the Dock). Then it keeps running as normal, it just happens to have a Dock icon.

That call might be what SDL does at startup… I think it's CPSGetCurrentProcess()? So breaking on that in gdb would be helpful - unfortunately, I can't reproduce this yet.


Return to “Perian”

Who is online

Users browsing this forum: No registered users