For brevity, here is the complete stacktrace (picked from shell command line) ::<br><br><br>##################################################################################################<br>=========== SqueakDebug.log START ==========<br>
Error: a primitive has failed<br>30 May 2012 2:21 pm<br><br>VM: unix - a SmalltalkImage<br>Image: etoys4.1 [latest update: #2390]<br><br>SecurityManager state:<br>Restricted: false<br>FileAccess: true<br>SocketAccess: true<br>
Working Dir /home/ajay/Etoys<br>Trusted Dir /home/ajay/.etoys/private<br>Untrusted Dir /home/ajay/Etoys<br><br>MPEGFile class(Object)>>error:<br> Receiver: MPEGFile<br> Arguments and temporary variables: <br> aString: 'a primitive has failed'<br>
Receiver's instance variables: <br> superclass: Object<br> methodDict: a MethodDictionary(#audioChannels:->a CompiledMethod (1113) #audioG...etc...<br> format: 138<br> instanceVariables: #('pathToFile' 'fileBits' 'fileIndex' 'endianness')<br>
organization: ('access' endianness fileHandle fileName getPercentage getTOC:doS...etc...<br> subclasses: nil<br> name: #MPEGFile<br> classPool: a Dictionary(#Registry->nil )<br>
sharedPools: nil<br> environment: a SystemDictionary(lots of globals)<br> category: nil<br><br>MPEGFile class(Object)>>primitiveFailed<br> Receiver: MPEGFile<br> Arguments and temporary variables: <br>
<br> Receiver's instance variables: <br> superclass: Object<br> methodDict: a MethodDictionary(#audioChannels:->a CompiledMethod (1113) #audioG...etc...<br> format: 138<br> instanceVariables: #('pathToFile' 'fileBits' 'fileIndex' 'endianness')<br>
organization: ('access' endianness fileHandle fileName getPercentage getTOC:doS...etc...<br> subclasses: nil<br> name: #MPEGFile<br> classPool: a Dictionary(#Registry->nil )<br>
sharedPools: nil<br> environment: a SystemDictionary(lots of globals)<br> category: nil<br><br>MPEGFile class>>primFileValidMPEG:<br> Receiver: MPEGFile<br> Arguments and temporary variables: <br>
aPath: '/home/ajay/Desktop/DELTA.MPG'<br> Receiver's instance variables: <br> superclass: Object<br> methodDict: a MethodDictionary(#audioChannels:->a CompiledMethod (1113) #audioG...etc...<br>
format: 138<br> instanceVariables: #('pathToFile' 'fileBits' 'fileIndex' 'endianness')<br> organization: ('access' endianness fileHandle fileName getPercentage getTOC:doS...etc...<br>
subclasses: nil<br> name: #MPEGFile<br> classPool: a Dictionary(#Registry->nil )<br> sharedPools: nil<br> environment: a SystemDictionary(lots of globals)<br> category: nil<br>
<br>MPEGFile class>>isFileValidMPEG:<br> Receiver: MPEGFile<br> Arguments and temporary variables: <br> path: '/home/ajay/Desktop/DELTA.MPG'<br> Receiver's instance variables: <br> superclass: Object<br>
methodDict: a MethodDictionary(#audioChannels:->a CompiledMethod (1113) #audioG...etc...<br> format: 138<br> instanceVariables: #('pathToFile' 'fileBits' 'fileIndex' 'endianness')<br>
organization: ('access' endianness fileHandle fileName getPercentage getTOC:doS...etc...<br> subclasses: nil<br> name: #MPEGFile<br> classPool: a Dictionary(#Registry->nil )<br>
sharedPools: nil<br> environment: a SystemDictionary(lots of globals)<br> category: nil<br><br><br>--- The full stack ---<br>MPEGFile class(Object)>>error:<br>MPEGFile class(Object)>>primitiveFailed<br>
MPEGFile class>>primFileValidMPEG:<br>MPEGFile class>>isFileValidMPEG:<br> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>MPEGDisplayMorph>>openFileNamed:<br>MPEGDisplayMorph>>openMPEGFile<br>
SimpleButtonMorph>>doButtonAction<br>SimpleButtonMorph>>mouseUp:<br>SimpleButtonMorph(Morph)>>handleMouseUp:<br>MouseButtonEvent>>sentTo:<br>SimpleButtonMorph(Morph)>>handleEvent:<br>SimpleButtonMorph(Morph)>>handleFocusEvent:<br>
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. ActiveEvent := anEvent. result := focusHolder han...]}<br>[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}<br>BlockContext>>on:do:<br>
PasteUpMorph>>becomeActiveDuring:<br>HandMorph>>sendFocusEvent:to:clear:<br>HandMorph>>sendEvent:focus:clear:<br>HandMorph>>sendMouseEvent:<br>HandMorph>>handleEvent:<br>HandMorph>>processEvents<br>
[] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]}<br>Array(SequenceableCollection)>>do:<br>WorldState>>handsDo:<br>WorldState>>doOneCycleNowFor:<br>
WorldState>>doOneCycleFor:<br>PasteUpMorph>>doOneCycle<br>[] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]}<br>[] in BlockContext>>newProcess {[self value. Processor terminateActive]}<br>
##################################################################################################<br><br><div class="gmail_quote">On Wed, May 30, 2012 at 10:59 AM, Ajay Garg <span dir="ltr"><<a href="mailto:ajay@activitycentral.com" target="_blank">ajay@activitycentral.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thanks Bert for the reply.<br><br>I downloaded the source from <a href="http://www.squeakvm.org/unix/release/Squeak-4.4.7.2357-src.tar.gz" target="_blank">http://www.squeakvm.org/unix/release/Squeak-4.4.7.2357-src.tar.gz</a>, did "make" and "sudo make install".<br>
<br>It seemed to work, but there was no improvement while playing "Supplies" -> "Object Catalogue" -> "Multimedia" -> "MPEGPlayer" ->''DELTA.MPG".<br><br>One thing I noted that all plugins file are of form "so.*", whereas I believe that in unix they should be of the form "*.so". For example, the generated Mpeg3Plugin file is "so.Mpeg3Plugin", and not "Mpeg3Plugin.so" - something which is expected for shared-object files in the unix world.<br>
<br>Am I missing something?<br><br><br>Thanks and Regards,<br>Ajay<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Wed, May 30, 2012 at 2:25 AM, Bert Freudenberg <span dir="ltr"><<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><div>So problem a) is Sugar, problem b) squeak. I'll ignore a). For b):</div>
<div><br></div><div>You do not need gstreamer, but rather Squeak's Mpeg3Plugin which has its own decoder. This is not shipped in Fedora due to mp3 licensing concerns. You need to copy it from an old UY bundle (there might be a x86 copy in some tracker ticket on d.l.o). If need be you can also compile it from a Squeak VM source tar ball (likely needed for ARM).<span><font color="#888888"><br>
<br>- Bert -</font></span></div><div><div><div><br>On 29.05.2012, at 22:26, Ajay Garg <<a href="mailto:ajay@activitycentral.com" target="_blank">ajay@activitycentral.com</a>> wrote:<br><br></div><div></div>
<blockquote type="cite"><div>Well, there are two different issues ::<br><br>a)<br>First is the data-store issue.<br><br>As seen from the logs, the (mp3) file that was opened, was present in a USB pen drive.<br>ANY ENTRY, when accessed via USB-pen-drive, will give this error (i.e. mp3, jpeg, png - any file).<br>
<br>CAUSE ::<br>=======<br><br>The code in "carquinol" package, presumes the data-to-be-accessed coming from the journal.<br><br><br><br>SOLUTION ::<br>==========<br><br>As happens with all entries that are accessed from USB pen-drives, these entries too need to be copied first to the journal, to maintain compatability.<br>
<br><br><br>SOLUTION-IMPLEMENTATION-REQUIREMENT ::<br>=====================================<br><br>The "etoys-sugar-code" is needed, wherein a flag may be passed to objectchooser, to copy the file to the journal if invoked from etoys; and subsequently access the journal-entry thereafter.<br>
<br>Bert, we will be grateful if you could provide the code-location for this.<br><br><br><br><br><br>b)<br>The second issue is the sound not playing.<br><br>I ensured that the following packages were installed on my non-XO laptop (Dell-F14-laptop) ::<br>
<br>* gstreamer-plugins-bad<br>* gstreamer-plugins-ugly<br>* gstreamer-ffmpeg<br>* etoys<br>* squeak-vm<br>* squeak-vm-nonXOplugins<br><br>Thereafter, I downloaded the following MPEG file ::<br><a href="http://samples.fileformat.info/format/mpeg/sample/567fd6a0e0da4a8e81bdeb870de3b19c/DELTA.MPG?AWSAccessKeyId=0V91BEFA7GM093MEVMG2&Signature=zvF6p5NE3Jz3oSKtyw2obyPosDQ%3D&Expires=1338322225" target="_blank">http://samples.fileformat.info/format/mpeg/sample/567fd6a0e0da4a8e81bdeb870de3b19c/DELTA.MPG?AWSAccessKeyId=0V91BEFA7GM093MEVMG2&Signature=zvF6p5NE3Jz3oSKtyw2obyPosDQ%3D&Expires=1338322225</a><br>
<br><br>and tried playing via "Supplies" -> "Object Catalogue" -> "Multimedia" -> "MPEGPlayer". However, I got the same "abandon" error, with the second-last, and third-last stack-point error as follows ::<br>
<br>#####################################################################<br>primitiveFailed<br> "Announce that a primitive has failed and there is no appropriate <br> Smalltalk code to run."<br><br> self error: 'a primitive has failed'<br>
<br><br>primFileValidMPEG: aPath<br> "Check to see if the file is valid"<br> <primitive: 'primitiveMPEG3CheckSig' module: 'Mpeg3Plugin'><br> self primitiveFailed<br>#####################################################################<br>
<br><br><br>SOLUTION ::<br>=========<br><br>I guess there is still some plugin missing on my Dell laptop.<br>But I have gone out of ideas to try.<br><br>Bert, we will again be grateful :)<br><br><br><br><br>Thanks and Regards,<br>
Ajay<br><br><br><div class="gmail_quote">On Sun, May 27, 2012 at 2:10 AM, Rafael Ortiz <span dir="ltr"><<a href="mailto:rafael@activitycentral.com" target="_blank">rafael@activitycentral.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br><br><div class="gmail_quote"><div><div>On Sat, May 26, 2012 at 12:13 PM, Rafael Ortiz <span dir="ltr"><<a href="mailto:rafael@activitycentral.com" target="_blank">rafael@activitycentral.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br><br><div class="gmail_quote"><div><div>On Sat, May 26, 2012 at 7:47 AM, Peter Robinson <span dir="ltr"><<a href="mailto:pbrobinson@gmail.com" target="_blank">pbrobinson@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div><div>On Sat, May 26, 2012 at 12:54 PM, Bert Freudenberg <<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>> wrote:<br>
><br>
> On <a href="tel:25.05.2012" value="+5725052012" target="_blank">25.05.2012</a>, at 22:21, Rafael Ortiz wrote:<br>
><br>
><br>
><br>
> On Thu, May 24, 2012 at 11:34 AM, Rafael Ortiz <<a href="mailto:rafael@activitycentral.com" target="_blank">rafael@activitycentral.com</a>><br>
> wrote:<br>
>><br>
>> Hi<br>
>><br>
>> While trying to add a journal entry (mp3 file) from etoys-113, i'm getting<br>
>> ."An error has occurred; you should probably just hit abandon. Sorry"<br>
>><br>
>> Is this known?<br>
>><br>
>> Log attached<br>
>><br>
><br>
> A clue on what this might be happening and how to solve it, appreciated.<br>
><br>
> Thanks :)<br>
><br>
><br>
> Well, the relevant lines in the error log seem to be these:<br>
><br>
> DBusError: Traceback (most recent call last):<br>
> File "/usr/lib/python2.7/site-packages/dbus/service.py", line 702, in<br>
> _message_cb<br>
> retval = candidate_method(self, *args, **keywords)<br>
> File "/usr/lib/python2.7/site-packages/carquinyol/datastore.py", line 355,<br>
> in get_properties<br>
> metadata = self._metadata_store.retrieve(uid)<br>
> File "/usr/lib/python2.7/site-packages/carquinyol/metadatastore.py", line<br>
> 41, in retrieve<br>
> return metadatareader.retrieve(metadata_path, properties)<br>
> IOError: Couldn't open metadata directory<br>
> /home/olpc/.sugar/default/datastore//m//media/Philips/Buenos Muchachos/Se<br>
> Pule La Colmena/2-06 Corazonoro.mp3/metadata<br>
><br>
> So apparently Etoys tries to access the metadata for the MP3 but the<br>
> datastore fails to find it. Etoys does not handle that case, it relies on<br>
> get_properties() succeeding. Is that wrong?<br>
<br>
</div></div>Being a mp3 do we even have the correct bits installed to be able to<br>
retrieve that information? </blockquote><div><br></div><div><br></div></div></div><div>In this case what would be the proper bits ?</div><div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Our default builds don't come with the<br>
ability to play mp3 files so I'm not sure if we can even read the<br>
metadata.<br>
<br></blockquote></div></div></blockquote><div><br></div></div></div><div>Also realized that the same problem is happening on</div><div>ogg files, so doesn't seem related to codecs.</div><div><div><br></div>
<div> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Peter<br>
_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</blockquote></div></div><br>
</blockquote></div></div><br>
<br>_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
<br></blockquote></div><br>
</div></blockquote></div></div></div></blockquote></div><br>
</div></div></blockquote></div><br>