I have encountered an issue with the mplayerplug-in package for Firefox within the Ubuntu Dapper environment.  After a period of playback (controlled by way of Javascript actions embedded within the HTML page), mplayerplug-in will become trapped in the following loop within Source/plugin.cpp where the value of state is STATE_GETTING_PLAYLIST (110):
 
   1986         while (state < STATE_WAITING_FOR_SIGNAL) {
   1987             printf("sleeping state = %i\n", state);
   1988             usleep(100);
   1989         }
It would appear that this state occurs where the player thread has been launched and then prematurely exited - See copied debug logs (below) for comparison of an operational and non-operational instance.
 
It would appear that the difference in operation is that in the non-operational instance, that the function playPlaylist is exiting due to local_td equalling NULL, although, from the copied debug logs (below) there is no apparent cause for this state.
 
   1391 void *playPlaylist(void *td)
   1392 {
   1393
   1394     PlayResult *result = NULL;
   1395     FILE *playlist;
   1396     char cmd[2048];
   1397     char message[1024];
   1398     char mmsplaylist[1024];
   1399     char buffer[1024];          // scratch pad
   1400     char *p;                    // pointer to find the ( in the callback
   1401
   1402     int argc = 0, base_argc = 0;
   1403     ThreadData *local_td;
   1404     Node *local_list;
   1405     char local_url[1024];
   1406     int local_mmsstream;
   1407     int i;
   1408     int loop_single = 0;
   1409     int loop_count;
   1410     Node *node;
   1411
   1412     int tryagain;
   1413     int usefps;
   1414     int nomouseinput;
   1415     int maybeplaylist;
   1416     int listempty;
   1417     int lasterror = -1;
   1418
   1419     local_td = (ThreadData *) td;
   1420     local_list = local_td->list;
   1421
   1422     if (local_td == NULL)
   1423         pthread_exit(0);
   1424
   1425     if (DEBUG)
   1426         printf("----player thread: in playPlaylist\n");
Firstly, is this a known issue?  And secondly, is there any known fix or workaround which I should implement (short of simply monitoring the debug log file and killing firefox-bin where this state occurs)?
 
Regards,
Rob
 
 
Rob Casey
Swish Interactive
a division of The Swish Group Limited
170 Dorcas Street
South Melbourne, Victoria 3205
Australia
[P] +61 3 9686 6640
[F] +61 3 9686 6680
[M] +61 401 460 490
[E] rob.casey@swishgroup.com.au
 
 
 
Debug log for operational playback:
 
JS filename issued
***************** SetFilename called http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
threadsetup = 0, threadsignaled = 0
Entering deleteList
DELETE http://127.0.0.1/content/TRL_CharlieAndChocFactory_HD1_43T.mpg
File to delete
size: 0
remove: 1
play: 1
playlist: 0
speed: -1
cancelled: 0
retrieved: 0
mms stream: 0
cache bytes: 0
Actual Size: 352x576
Play Size: 768x576
in fullyQualifyURL
item: http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
baseurl: (null)
hostname: (null)
in fexists
isMms = true
fqu result: http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
SetFilename getting http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
in fexists
isMms = true
**********SetFilename Exit***************
JS Play issued
*****Play Called
Play: resetting playlist
Play: setupplayer
Entering SetupPlayer
using url for url
in getURLBase
in getURLBase base: http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
exiting URL base with http://127.0.0.1/content/
entering getURLHostname
exiting getURLHostname with 127.0.0.1
in fullyQualifyURL
item: http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
baseurl: http://127.0.0.1/content/
hostname: 127.0.0.1
in fexists
isMms = true
fqu result: http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
url http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
buffer http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
ready to setup threads
creating thread - NP_EMBED
creating player thread
In launchPlayerThread, state = 110
launchPlayerThread - creating new thread
----player thread: in playPlaylist
----player thread: about to go to sleep, js_state = 6, state = 110
MAIN THREAD DONE
Play: ready to signal
Play: signalling thread
Signalling Player thread, state = 112, js_state = 6
play clickd
***********Exiting Play*************
local_td = 0x8373f68
local_td->instance = 0x87bd538
---player thread: got wakeup signal, js_state = 6, state = 115
----player thread: playPlayList - waiting complete
----player thread: building command string
.
.
 
 
 
Debug log for non-operational playback:
 
JS filename issued
***************** SetFilename called http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
threadsetup = 0, threadsignaled = 0
Entering deleteList
DELETE http://127.0.0.1/content/TRL_DukesOfHazzard_HD1_43T.mpg
File to delete
size: 0
remove: 1
play: 1
playlist: 0
speed: -1
cancelled: 0
retrieved: 0
mms stream: 0
cache bytes: 0
Actual Size: 352x576
Play Size: 768x576
in fullyQualifyURL
item: http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
baseurl: (null)
hostname: (null)
in fexists
isMms = true
fqu result: http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
SetFilename getting http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
in fexists
isMms = true
**********SetFilename Exit***************
JS Play issued
*****Play Called
Play: resetting playlist
Play: setupplayer
Entering SetupPlayer
using url for url
in getURLBase
in getURLBase base: http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
exiting URL base with http://127.0.0.1/content/
entering getURLHostname
exiting getURLHostname with 127.0.0.1
in fullyQualifyURL
item: http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
baseurl: http://127.0.0.1/content/
hostname: 127.0.0.1
in fexists
isMms = true
fqu result: http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
url http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
buffer http://127.0.0.1/content/TRL_WeddingCrashers_HD1_43T.mpg
ready to setup threads
creating thread - NP_EMBED
creating player thread
In launchPlayerThread, state = 110
launchPlayerThread - creating new thread
MAIN THREAD DONE
Play: ready to signal
sleeping state = 110
sleeping state = 110
sleeping state = 110
sleeping state = 110
sleeping state = 110
.
.
.
(Continues ad-infinitum)