Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
January 2012
- 118 participants
- 1442 messages
[Pharo-project] [update 1.4] #14283
by Stéphane Ducasse
14283
-----
- Issue 2560: Convenient methods from Grease for Strings. Part Five.
http://code.google.com/p/pharo/issues/detail?id=2560
Now no excuse anymore: webpage CV to look smart and project proposals⦠:(
Jan. 9, 2012
[Pharo-project] Smalltalk/Pharo User Group in Madrid
by Rafael Luque
Hi all,
I'm interested in organizing a Smalltalk/Pharo User Group in Madrid. If any
member of the list is algo interested and lives in the Madrid area, please
contact me.
Thanks,
Rafael Luque
Jan. 9, 2012
Re: [Pharo-project] [update 1.4] #14282
by Stéphane Ducasse
This is my drug. I like improving the system (instead of writing project proposals I must do :).
On Jan 9, 2012, at 9:01 PM, Sven Van Caekenberghe wrote:
>
> On 09 Jan 2012, at 20:50, Stéphane Ducasse wrote:
>
>> 14282
>> -----
>>
>> - Issue 2560: Convenient methods from Grease for Strings. Part 4.
>> http://code.google.com/p/pharo/issues/detail?id=2560
>
> Thx, up to the next refactoring ;-)
>
> Sven
Jan. 9, 2012
Re: [Pharo-project] Cog+linux: external module not found
by Stéphane Ducasse
On Jan 9, 2012, at 8:25 PM, Eliot Miranda wrote:
>
>
> On Mon, Jan 9, 2012 at 11:22 AM, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
> Hi guys
>
> I suggest that you both take a good and fresh air. I somehow learned some expressions I do not deeply understand
> but I prefer when I do not learn them :). I could not get SOL
>
> "Shit out of luck."
:)
Not sure my wife wants my kids to learn that but now I know more slang :)
>
> Wikipedia fails on it:
> Le sol représente la couche superficielle, meuble, de la croûte terrestre, résultant de la transformation de la roche mère, enrichie par des apports organiques. â¦
> I knew that one :)
>
> I'm sure that if you would be around a cup of coffee you would not react like that. I can understand both situations and
> I know by experience that email communication is not the best. Nobody likes to receive insults in his mailbox.
> So unplugged from keyboard even if I know how it is difficult :).
>
> Stef ZE Wise®
>
>
>
>
>
>
>
> --
> best,
> Eliot
>
Jan. 9, 2012
Re: [Pharo-project] Cog+linux: external module not found
by Schwab,Wilhelm K
Eliot,
Read Stef's email. Take note that I did the debugging "for you." Actually, I did it for all of us, for Pharo, for Smalltalk, and for Linux. That's not how someone with an attitude of entitlement acts.
Bill
________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] on behalf of Eliot Miranda [eliot.miranda(a)gmail.com]
Sent: Monday, January 09, 2012 2:24 PM
To: Pharo-project(a)lists.gforge.inria.fr
Subject: Re: [Pharo-project] Cog+linux: external module not found
On Mon, Jan 9, 2012 at 11:06 AM, Schwab,Wilhelm K <bschwab(a)anest.ufl.edu<mailto:bschwab@anest.ufl.edu>> wrote:
I think you have the situation very much in reverse. You are flying off the handle, not me.
No, Bill. I'm not interested in a public (or private) argument. But I am not flying off the handle. Your opening messages in this thread display a sense of entitlement, i..e that you expect me to debug and/or get Cog working underneath Pharo on the particular linux distro that you're using, You also display an ignorance of the community in stating "Is that really the message we want to send to current and *prospective* users?" when I'm only peripherally involved with Pharo; I wrote Cog, and work principally in Newspeak and Squeak. You then accuse me of flying off the handle, when it was you who used *'s and !!'s, not me. Either calm down or I'll have to put you in my kill file. When you start providing feedback like Levente, Mariano, Andreas et al, and stop demanding support I'll be interested in your collaboration, but right now our exchanges don't feel mutually beneficial. I'll not be responding to you further in this thread.
Cog deserves better than to ignore feedback from motivated users. Motivated users deserve better than to be insulted for their efforts to improve it.
________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr> [pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr>] on behalf of Eliot Miranda [eliot.miranda(a)gmail.com<mailto:eliot.miranda@gmail.com>]
Sent: Monday, January 09, 2012 1:57 PM
To: Pharo-project(a)lists.gforge.inria.fr<mailto:Pharo-project@lists.gforge.inria.fr>
Subject: Re: [Pharo-project] Cog+linux: external module not found
I'm definitely not interested in help from someone who flies off the handle like this. Plonk.
On Mon, Jan 9, 2012 at 10:55 AM, Schwab,Wilhelm K <bschwab(a)anest.ufl.edu<mailto:bschwab@anest.ufl.edu>> wrote:
Eliot,
Whining - that's a bit much. In fact it is TOTALLY unjustified.
Last year, I spent (end to end) months learning how to get away from creating my own hacked vms - that's how I knew about ldconfig's behavior , and have come to appreciate that Canonical got this one right.
Recently, I spent hours running down why Cog fails to find properly installed libraries on a major Linux platform. I'd say that's "pitching in." It sure isn't whining!!
Am I certain of all the details of what should happen and why? No. Am I the best person to tell the vm to stop looking here/there/everywhere and just use the module name as given? Certainly not. I *thought* you might want to do that yourself, so it gets done properly.
I also thought you might appreciate some help in debugging a problem. Instead you tell me that I am an SOL whiner. Not good.
Bill
________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr> [pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr>] on behalf of Eliot Miranda [eliot.miranda(a)gmail.com<mailto:eliot.miranda@gmail.com>]
Sent: Monday, January 09, 2012 1:34 PM
To: Pharo-project(a)lists.gforge.inria.fr<mailto:Pharo-project@lists.gforge.inria.fr>
Subject: Re: [Pharo-project] Cog+linux: external module not found
On Sat, Jan 7, 2012 at 5:16 PM, David T. Lewis <lewis(a)mail.msen.com<mailto:lewis@mail.msen.com>> wrote:
On Sun, Jan 08, 2012 at 12:37:59AM +0000, Schwab,Wilhelm K wrote:
> Eliot,
>
> SOL?? Is that really the message we want to send to current and *prospective* users? Canonical does something that makes sense from a security perspective (one needs root privileges to alter the ldconfig mapping, not to to use it). All the vm needs to do is request the #moduleName as given, and users of Pharo "SOL" as a result?
>
> Please reconsider.
>
> Bill
>
I think you are taking the response out of context. The actual statement
was "Then you're SOL :) You'd need to write new support for Ubuntu."
You might take that as a gentle suggestion to expend a bit of effort
on it yourself. After all, it is open source, and Eliot is only one
person. He can't do everything for everybody without a little help
from the rest of us.
quite. i don't even have an ubuntu VM, let alone the time to work on it. Bill, instead of whining, pitch in, please.
Dave
>
>
>
> ________________________________
> From: pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr> [pharo-project-bounces(a)lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr>] on behalf of Eliot Miranda [eliot.miranda(a)gmail.com<mailto:eliot.miranda@gmail.com>]
> Sent: Saturday, January 07, 2012 6:38 PM
> To: Pharo-project(a)lists.gforge.inria.fr<mailto:Pharo-project@lists.gforge.inria.fr>
> Subject: Re: [Pharo-project] Cog+linux: external module not found
>
>
>
> On Sat, Jan 7, 2012 at 8:49 AM, Schwab,Wilhelm K <bschwab(a)anest.ufl.edu<mailto:bschwab@anest.ufl.edu><mailto:bschwab@anest.ufl.edu<mailto:bschwab@anest.ufl.edu>>> wrote:
> Nick,
>
> Partial success. After a false start with getting output from strace (my fault), it showed me that the vm was looking a lot in the vm's directory. A symlink by the same name, allowed it to see the library. Clearly, this is not a fix, because one should not be forced to make links to any/every library on the system. However, it *was* nice to see the version string in an inspector :)
>
> Looking at the strace output (relevant parts below), it tries with prepending lib, appending .so, .so.dylib. It looks in the vm's directory, and in the root directory, not /usr/lib.
>
> It has been almost a year (based on a dated comment) since I last really strained my synapses on the workings of ldconfig. On my systems, it would tell one to look for the library as follows:
>
> ldconfig -p | grep Acces
> libAccesIO-USB.so (libc6) => /usr/lib/libAccesIO-USB.so
>
> #moduleName answers 'libAccesIO-USB.so', and Ian's vm finds it. My (and I use the term LOOSELY) understanding is that Ubuntu no longer uses LD_LIBRARY_PATH. dlopen() seems to prefer that one use the names as reported by ldconfig. The best explanation I have found is that the change was a security measure.
>
> Then you're SOL :) You'd need to write new support for Ubuntu.
>
>
> How does one get ldconfig to "know" where something lives? Putting a .so file in /usr/lib (and perhaps other places too) and then running ldconfig as sudo appears to build a cache. Then ldconfig -p (anyone can run this) will show the map, and one can grep the result to find something specifc, as above.
>
> Putting files in /usr/lib is a pain for things under active development. A file can live anywhere if one puts a .conf file in /etc/ld.so.confd; the .conf files should contain paths to directories to be searched for .so files - or at least that's how it *appears* to work. Run ldconfig as sudo to refresh the mapping, and verify with ldconfig - p.
>
> The fix might be as simply as having the cog vm try passing the #moduleName to dlopen().
>
> Nick, thanks for the nudge in a working direction. I will probably symlink another file and see if a mix of hardware and software will get closer to cooperating with me.
>
> Bill
>
--
best,
Eliot
--
best,
Eliot
--
best,
Eliot
Jan. 9, 2012
Re: [Pharo-project] [update 1.4] #14282
by Sven Van Caekenberghe
On 09 Jan 2012, at 20:50, Stéphane Ducasse wrote:
> 14282
> -----
>
> - Issue 2560: Convenient methods from Grease for Strings. Part 4.
> http://code.google.com/p/pharo/issues/detail?id=2560
Thx, up to the next refactoring ;-)
Sven
Jan. 9, 2012
[Pharo-project] [update 1.4] #14282
by Stéphane Ducasse
14282
-----
- Issue 2560: Convenient methods from Grease for Strings. Part 4.
http://code.google.com/p/pharo/issues/detail?id=2560
- Issue 5161: Small fixes to FSReadStream
http://code.google.com/p/pharo/issues/detail?id=5161
- Issue 5162: Little fix about Tabs
http://code.google.com/p/pharo/issues/detail?id=5162
- Issue 3692: Default line-end convention fix. Thanks Javier pinas, Igor and henrik.
http://code.google.com/p/pharo/issues/detail?id=3692.
Stef
Jan. 9, 2012
Re: [Pharo-project] Bug in #pointsTo: ?
by Levente Uzonyi
On Mon, 9 Jan 2012, Mariano Martinez Peck wrote:
>>
>>>>
>>>> So..I am puzzle again. I said "In which scenario can (self
>>> instVarsInclude: anObject) answer true, but the loop false? "
>>> you answered: "The scenario happens when the receiver has weak slots and
>>> the argument is referenced from one of those weak slots, but not from the
>>> other slots."
>>> Imagine the receiver has a weak slot XXX that points to anObject. So (self
>>> instVarsInclude: anObject) answers true. How can the loop answer false
>>> without a GC?
>>> why would XXX stop pointing to anObject if there is not GC in the middle ?
>>>
>>
>> The loop doesn't iterate over the indexable slots, only named ones.
>>
>>
> grrr you are right!
>
> Ok, so I finally got it. So previously pointersTo: would answer true even
> if the slots were weak. Now it would answer false, and that's why you have
> changed the method comment.
> Now I am thinking if this should be the default behavior of #pointsTo:. If
> I just read the selector #pointsTo: I would guess weak references are also
> taken into account. So that's why I am not completely sure. Aren't there
> any other impact of the system because of this change?
> what about having #stronglyPointsTo: with this new version and have another
> one #pointsTo: which considers weak also?
> does it make sense? or it is better to directly avoid weak by defualt in
> #pointsTo?
I wasn't sure about this, that's why it's not in Squeak yet. Ignoring
weak references is okay as long as these methods are only used for pointer
tracing.
Levente
>
>
>
>>
>> Levente
>>
>>
>>> thanks
>>>
>>>
>>> Levente
>>>>
>>>>
>>>>
>>>>>
>>>>> doesn't #instVarsInclude do exactly what you are doing there?
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Just partially. Since we have no information about which slots hold
>>>>>> the
>>>>>> reference to the argument, therefore this loop must be "repeated".
>>>>>>
>>>>>>
>>>>>
>>>>> Ok, I see.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Anyway, I have integrated your changes in Pharo, but still, I have the
>>>>>>
>>>>>>> same
>>>>>>> problem :(
>>>>>>> If I understand correctly, the following shouldn't fail, but it does.
>>>>>>> Here
>>>>>>> is the version of Squeak that fails.
>>>>>>>
>>>>>>>
>>>>>>> The assetion fails, because the indirection vector (the Array found
>>>>>> by
>>>>>> PointerFinder) holds a reference to the object after the first
>>>>>> assignment
>>>>>> to a. If you move the temporary inside the block or use an inlined loop
>>>>>> (e.g. #to:do: with literal block argument), then the assertion won't
>>>>>> fail.
>>>>>> So this is just a normal (maybe surprising) reference to the object.
>>>>>>
>>>>>>
>>>>>> Excellent. Now I got it. Thank you very much for your help Levente.
>>>>>> Now
>>>>>>
>>>>> PointerFinderTest are green :)
>>>>>
>>>>>
>>>>>
>>>>> Levente
>>>>>>
>>>>>>
>>>>>> | a |
>>>>>>
>>>>>>> 10 timesRepeat: [
>>>>>>> a := Date new.
>>>>>>> Smalltalk garbageCollect.
>>>>>>> self assert: (PointerFinder pointersTo: a) isEmpty
>>>>>>> ]
>>>>>>>
>>>>>>> Thanks a lot,
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jan 9, 2012 at 2:40 PM, Levente Uzonyi <leves(a)elte.hu> wrote:
>>>>>>>
>>>>>>> On Sun, 8 Jan 2012, Mariano Martinez Peck wrote:
>>>>>>>
>>>>>>>
>>>>>>> What I don't understand is why in Squeak it does work.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Because #pointsTo: is not used in Squeak (yet). As usual I dug
>>>>>>>>>>> deeper
>>>>>>>>>>>
>>>>>>>>>>> than
>>>>>>>>>> I should have, so I'll publish a few changes soon.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Ok, you are right. Squeak #inboundPointersExcluding: is using
>>>>>>>>>>
>>>>>>>>>> #instVarsInclude: rather than #pointsTo. And that solves the
>>>>>>>>>>
>>>>>>>>> problem in
>>>>>>>>> Pharo as well. But still, I would like to understand why we get
>>>>>>>>> those
>>>>>>>>> method contexts with #pointsTo.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Because #pointsTo: is a normal message send, it even sends other
>>>>>>>>>
>>>>>>>> methods,
>>>>>>>> so it will create contexts.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks Levente for your help. If you find something let us know, I
>>>>>>>> want
>>>>>>>> to
>>>>>>>>
>>>>>>>> learn :)
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I pushed my changes to the Squeak Inbox, which fully works around
>>>>>>>>>
>>>>>>>> this
>>>>>>>> issue. The changes about weak references can simply be removed if you
>>>>>>>> don't
>>>>>>>> like them, the rest will just work without them.
>>>>>>>>
>>>>>>>>
>>>>>>>> Levente
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Levente
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks in advance Levente!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> it will create at least one new MethodContext which is not
>>>>>>>>>>> included
>>>>>>>>>>> in
>>>>>>>>>>>
>>>>>>>>>>> that list.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Levente
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Levente
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks again.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Levente
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Do you mean what I understand :)? that some tools compiled
>>>>>>>>>>>>>>>> methods?
>>>>>>>>>>>>>>>> :)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Stef
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> http://marianopeck.wordpress.****************com <
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>>>>> com <http://marianopeck.wordpress.************com<
>>>>>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.********com<
>>>>>>>>>>>>>>>>> http://marianopeck.****wordpress**.com <
>>>>>>>>>>>>>>>>> http://wordpress.com><
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> http://marianopeck.**wordpress**.com <http://wordpress.com>
>>>>>>>>>>>>>>>>> <http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> http://marianopeck.wordpress.**************com <
>>>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>>> com <http://marianopeck.wordpress.**********com<
>>>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.******com<
>>>>>>>>>>>>>>> http://marianopeck.**wordpress**.com <http://wordpress.com><
>>>>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://marianopeck.wordpress.************com <
>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>> ****
>>>>>>>>>>>>> com <http://marianopeck.wordpress.********com<
>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.****com<
>>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Mariano
>>>>>>>>>>> http://marianopeck.wordpress.**********com <
>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>> ****
>>>>>>>>>>> com <http://marianopeck.wordpress.******com<http://marianopeck.**
>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>> Mariano
>>>>>>>>> http://marianopeck.wordpress.********com <
>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>> ****
>>>>>>>>> com <http://marianopeck.wordpress.****com<http://marianopeck.**
>>>>>>>>> wordpress.com <http://marianopeck.wordpress.com>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>> Mariano
>>>>>>> http://marianopeck.wordpress.******com <http://marianopeck.wordpress.
>>>>>>> ****
>>>>>>> com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>> --
>>>>> Mariano
>>>>> http://marianopeck.wordpress.****com <http://marianopeck.wordpress.**
>>>>> com <http://marianopeck.wordpress.com>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.**com <http://marianopeck.wordpress.com>
>>>
>>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
Jan. 9, 2012
Re: [Pharo-project] Bug in #pointsTo: ?
by Mariano Martinez Peck
>
>>>
>>> So..I am puzzle again. I said "In which scenario can (self
>> instVarsInclude: anObject) answer true, but the loop false? "
>> you answered: "The scenario happens when the receiver has weak slots and
>> the argument is referenced from one of those weak slots, but not from the
>> other slots."
>> Imagine the receiver has a weak slot XXX that points to anObject. So (self
>> instVarsInclude: anObject) answers true. How can the loop answer false
>> without a GC?
>> why would XXX stop pointing to anObject if there is not GC in the middle ?
>>
>
> The loop doesn't iterate over the indexable slots, only named ones.
>
>
grrr you are right!
Ok, so I finally got it. So previously pointersTo: would answer true even
if the slots were weak. Now it would answer false, and that's why you have
changed the method comment.
Now I am thinking if this should be the default behavior of #pointsTo:. If
I just read the selector #pointsTo: I would guess weak references are also
taken into account. So that's why I am not completely sure. Aren't there
any other impact of the system because of this change?
what about having #stronglyPointsTo: with this new version and have another
one #pointsTo: which considers weak also?
does it make sense? or it is better to directly avoid weak by defualt in
#pointsTo?
>
> Levente
>
>
>> thanks
>>
>>
>> Levente
>>>
>>>
>>>
>>>>
>>>> doesn't #instVarsInclude do exactly what you are doing there?
>>>>>
>>>>>
>>>>>>
>>>>>> Just partially. Since we have no information about which slots hold
>>>>> the
>>>>> reference to the argument, therefore this loop must be "repeated".
>>>>>
>>>>>
>>>>
>>>> Ok, I see.
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> Anyway, I have integrated your changes in Pharo, but still, I have the
>>>>>
>>>>>> same
>>>>>> problem :(
>>>>>> If I understand correctly, the following shouldn't fail, but it does.
>>>>>> Here
>>>>>> is the version of Squeak that fails.
>>>>>>
>>>>>>
>>>>>> The assetion fails, because the indirection vector (the Array found
>>>>> by
>>>>> PointerFinder) holds a reference to the object after the first
>>>>> assignment
>>>>> to a. If you move the temporary inside the block or use an inlined loop
>>>>> (e.g. #to:do: with literal block argument), then the assertion won't
>>>>> fail.
>>>>> So this is just a normal (maybe surprising) reference to the object.
>>>>>
>>>>>
>>>>> Excellent. Now I got it. Thank you very much for your help Levente.
>>>>> Now
>>>>>
>>>> PointerFinderTest are green :)
>>>>
>>>>
>>>>
>>>> Levente
>>>>>
>>>>>
>>>>> | a |
>>>>>
>>>>>> 10 timesRepeat: [
>>>>>> a := Date new.
>>>>>> Smalltalk garbageCollect.
>>>>>> self assert: (PointerFinder pointersTo: a) isEmpty
>>>>>> ]
>>>>>>
>>>>>> Thanks a lot,
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 9, 2012 at 2:40 PM, Levente Uzonyi <leves(a)elte.hu> wrote:
>>>>>>
>>>>>> On Sun, 8 Jan 2012, Mariano Martinez Peck wrote:
>>>>>>
>>>>>>
>>>>>> What I don't understand is why in Squeak it does work.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> Because #pointsTo: is not used in Squeak (yet). As usual I dug
>>>>>>>>>> deeper
>>>>>>>>>>
>>>>>>>>>> than
>>>>>>>>> I should have, so I'll publish a few changes soon.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Ok, you are right. Squeak #inboundPointersExcluding: is using
>>>>>>>>>
>>>>>>>>> #instVarsInclude: rather than #pointsTo. And that solves the
>>>>>>>>>
>>>>>>>> problem in
>>>>>>>> Pharo as well. But still, I would like to understand why we get
>>>>>>>> those
>>>>>>>> method contexts with #pointsTo.
>>>>>>>>
>>>>>>>>
>>>>>>>> Because #pointsTo: is a normal message send, it even sends other
>>>>>>>>
>>>>>>> methods,
>>>>>>> so it will create contexts.
>>>>>>>
>>>>>>>
>>>>>>> Thanks Levente for your help. If you find something let us know, I
>>>>>>> want
>>>>>>> to
>>>>>>>
>>>>>>> learn :)
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I pushed my changes to the Squeak Inbox, which fully works around
>>>>>>>>
>>>>>>> this
>>>>>>> issue. The changes about weak references can simply be removed if you
>>>>>>> don't
>>>>>>> like them, the rest will just work without them.
>>>>>>>
>>>>>>>
>>>>>>> Levente
>>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Levente
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks in advance Levente!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> it will create at least one new MethodContext which is not
>>>>>>>>>> included
>>>>>>>>>> in
>>>>>>>>>>
>>>>>>>>>> that list.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Levente
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Levente
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks again.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Levente
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Do you mean what I understand :)? that some tools compiled
>>>>>>>>>>>>>>> methods?
>>>>>>>>>>>>>>> :)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Stef
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> http://marianopeck.wordpress.****************com <
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>>>> com <http://marianopeck.wordpress.************com<
>>>>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.********com<
>>>>>>>>>>>>>>>> http://marianopeck.****wordpress**.com <
>>>>>>>>>>>>>>>> http://wordpress.com><
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> http://marianopeck.**wordpress**.com <http://wordpress.com>
>>>>>>>>>>>>>>>> <http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> http://marianopeck.wordpress.**************com <
>>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>> com <http://marianopeck.wordpress.**********com<
>>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.******com<
>>>>>>>>>>>>>> http://marianopeck.**wordpress**.com <http://wordpress.com><
>>>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>
>>>>>>>>>>>> http://marianopeck.wordpress.************com <
>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>> ****
>>>>>>>>>>>> com <http://marianopeck.wordpress.********com<
>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.****com<
>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Mariano
>>>>>>>>>> http://marianopeck.wordpress.**********com <
>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>> ****
>>>>>>>>>> com <http://marianopeck.wordpress.******com<http://marianopeck.**
>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>>>>>> >>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>
>>>>>>>> Mariano
>>>>>>>> http://marianopeck.wordpress.********com <
>>>>>>>> http://marianopeck.wordpress.
>>>>>>>> ****
>>>>>>>> com <http://marianopeck.wordpress.****com<http://marianopeck.**
>>>>>>>> wordpress.com <http://marianopeck.wordpress.com>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> --
>>>>>> Mariano
>>>>>> http://marianopeck.wordpress.******com <http://marianopeck.wordpress.
>>>>>> ****
>>>>>> com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>> >>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.****com <http://marianopeck.wordpress.**
>>>> com <http://marianopeck.wordpress.com>>
>>>>
>>>>
>>>>
>>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.**com <http://marianopeck.wordpress.com>
>>
>>
>
--
Mariano
http://marianopeck.wordpress.com
Jan. 9, 2012
Re: [Pharo-project] Bug in #pointsTo: ?
by Levente Uzonyi
On Mon, 9 Jan 2012, Mariano Martinez Peck wrote:
> On Mon, Jan 9, 2012 at 8:01 PM, Levente Uzonyi <leves(a)elte.hu> wrote:
>
>> On Mon, 9 Jan 2012, Mariano Martinez Peck wrote:
>>
>> On Mon, Jan 9, 2012 at 7:13 PM, Levente Uzonyi <leves(a)elte.hu> wrote:
>>>
>>> On Mon, 9 Jan 2012, Mariano Martinez Peck wrote:
>>>>
>>>> Hi Levente. Thanks for looking into the issue. I saw your code and there
>>>>
>>>>> is
>>>>> something I don't understand.
>>>>>
>>>>> pointsTo: anObject
>>>>> "Answers true if the garbage collector would fail to collect anObject
>>>>> because I hold a reference to it, or false otherwise"
>>>>>
>>>>> (self instVarsInclude: anObject)
>>>>> ifTrue: [
>>>>> self class isWeak ifFalse: [ ^true ].
>>>>> 1 to: self class instSize do: [ :i |
>>>>> (self instVarAt: i) == anObject ifTrue: [ ^true ] ].
>>>>> ^false ]
>>>>> ifFalse: [ ^self class == anObject and: [ self class isCompact not
>>>>> ] ]
>>>>>
>>>>>
>>>>> I don't understand the loop of
>>>>>
>>>>> 1 to: self class instSize do: [ :i |
>>>>> (self instVarAt: i) == anObject ifTrue: [ ^true ] ].
>>>>>
>>>>>
>>>>> In which scenario can (self instVarsInclude: anObject) answer true,
>>>>> but the loop false?
>>>>>
>>>>>
>>>> The scenario happens when the receiver has weak slots and the argument is
>>>> referenced from one of those weak slots, but not from the other slots.
>>>>
>>>>
>>>> Ok, I see. And moreover, there has to be a GC in the middle, right?
>>> so..the scenario is "The scenario happens when the receiver has weak
>>> slots,
>>> the argument is referenced from one of those weak slots, but not from the
>>> other non-weak slots, and also when a GC runs between the invokation to
>>> #instVarsInclude: and the loop".
>>> is that correct? so that I will add this comment to the code ;)
>>>
>>
>> No, there doesn't have to be a GC.
>>
>>
>>
> So..I am puzzle again. I said "In which scenario can (self
> instVarsInclude: anObject) answer true, but the loop false? "
> you answered: "The scenario happens when the receiver has weak slots and
> the argument is referenced from one of those weak slots, but not from the
> other slots."
> Imagine the receiver has a weak slot XXX that points to anObject. So (self
> instVarsInclude: anObject) answers true. How can the loop answer false
> without a GC?
> why would XXX stop pointing to anObject if there is not GC in the middle ?
The loop doesn't iterate over the indexable slots, only named ones.
Levente
>
> thanks
>
>
>> Levente
>>
>>
>>>
>>>
>>>> doesn't #instVarsInclude do exactly what you are doing there?
>>>>
>>>>>
>>>>>
>>>> Just partially. Since we have no information about which slots hold the
>>>> reference to the argument, therefore this loop must be "repeated".
>>>>
>>>
>>>
>>> Ok, I see.
>>>
>>>
>>>
>>>>
>>>>
>>>> Anyway, I have integrated your changes in Pharo, but still, I have the
>>>>> same
>>>>> problem :(
>>>>> If I understand correctly, the following shouldn't fail, but it does.
>>>>> Here
>>>>> is the version of Squeak that fails.
>>>>>
>>>>>
>>>> The assetion fails, because the indirection vector (the Array found by
>>>> PointerFinder) holds a reference to the object after the first assignment
>>>> to a. If you move the temporary inside the block or use an inlined loop
>>>> (e.g. #to:do: with literal block argument), then the assertion won't
>>>> fail.
>>>> So this is just a normal (maybe surprising) reference to the object.
>>>>
>>>>
>>>> Excellent. Now I got it. Thank you very much for your help Levente. Now
>>> PointerFinderTest are green :)
>>>
>>>
>>>
>>>> Levente
>>>>
>>>>
>>>> | a |
>>>>> 10 timesRepeat: [
>>>>> a := Date new.
>>>>> Smalltalk garbageCollect.
>>>>> self assert: (PointerFinder pointersTo: a) isEmpty
>>>>> ]
>>>>>
>>>>> Thanks a lot,
>>>>>
>>>>>
>>>>> On Mon, Jan 9, 2012 at 2:40 PM, Levente Uzonyi <leves(a)elte.hu> wrote:
>>>>>
>>>>> On Sun, 8 Jan 2012, Mariano Martinez Peck wrote:
>>>>>
>>>>>
>>>>>> What I don't understand is why in Squeak it does work.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> Because #pointsTo: is not used in Squeak (yet). As usual I dug
>>>>>>>>> deeper
>>>>>>>>>
>>>>>>>> than
>>>>>>>> I should have, so I'll publish a few changes soon.
>>>>>>>>
>>>>>>>>
>>>>>>>> Ok, you are right. Squeak #inboundPointersExcluding: is using
>>>>>>>>
>>>>>>>> #instVarsInclude: rather than #pointsTo. And that solves the
>>>>>>> problem in
>>>>>>> Pharo as well. But still, I would like to understand why we get those
>>>>>>> method contexts with #pointsTo.
>>>>>>>
>>>>>>>
>>>>>>> Because #pointsTo: is a normal message send, it even sends other
>>>>>> methods,
>>>>>> so it will create contexts.
>>>>>>
>>>>>>
>>>>>> Thanks Levente for your help. If you find something let us know, I
>>>>>> want
>>>>>> to
>>>>>>
>>>>>> learn :)
>>>>>>>
>>>>>>>
>>>>>>> I pushed my changes to the Squeak Inbox, which fully works around
>>>>>> this
>>>>>> issue. The changes about weak references can simply be removed if you
>>>>>> don't
>>>>>> like them, the rest will just work without them.
>>>>>>
>>>>>>
>>>>>> Levente
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Levente
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks in advance Levente!
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> it will create at least one new MethodContext which is not included
>>>>>>>>> in
>>>>>>>>>
>>>>>>>>> that list.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Levente
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Levente
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Thanks again.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Levente
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Do you mean what I understand :)? that some tools compiled
>>>>>>>>>>>>>> methods?
>>>>>>>>>>>>>> :)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Stef
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> http://marianopeck.wordpress.**************com <
>>>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>>>> ****
>>>>>>>>>>>>>>> com <http://marianopeck.wordpress.**********com<
>>>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.******com<
>>>>>>>>>>>>>>> http://marianopeck.**wordpress**.com <http://wordpress.com><
>>>>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mariano
>>>>>>>>>>>>>>
>>>>>>>>>>>>> http://marianopeck.wordpress.************com <
>>>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>>>> ****
>>>>>>>>>>>>> com <http://marianopeck.wordpress.********com<
>>>>>>>>>>>>> http://marianopeck.****
>>>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.****com<
>>>>>>>>>>>>> http://marianopeck.**wordpress.com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Mariano
>>>>>>>>>>> http://marianopeck.wordpress.**********com <
>>>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>>>> ****
>>>>>>>>>>> com <http://marianopeck.wordpress.******com<http://marianopeck.**
>>>>>>>>>>> wordpress.com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>> Mariano
>>>>>>>>> http://marianopeck.wordpress.********com <
>>>>>>>>> http://marianopeck.wordpress.
>>>>>>>>> ****
>>>>>>>>> com <http://marianopeck.wordpress.****com<http://marianopeck.**
>>>>>>>>> wordpress.com <http://marianopeck.wordpress.com>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>> Mariano
>>>>>>> http://marianopeck.wordpress.******com <http://marianopeck.wordpress.
>>>>>>> ****
>>>>>>> com <http://marianopeck.wordpress.**com<http://marianopeck.wordpress.com>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>> --
>>>>> Mariano
>>>>> http://marianopeck.wordpress.****com <http://marianopeck.wordpress.**
>>>>> com <http://marianopeck.wordpress.com>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.**com <http://marianopeck.wordpress.com>
>>>
>>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
Jan. 9, 2012