Re: [Pharo-users] What is the craziest bug you ever face

2017-03-14 Thread Richard Sargent
This is not so much about debugging; it's a much more general issue. Given
that Smalltalk is designed to allow one to interact with objects, it always
frustrates me when our many browsers hide their implementation. We should be
able to open inspectors on the model and the UI instance quickly and easily.
These would greatly facilitate learning how the browsers works and to be
able to script things that the browser developer did not include.
 
e.g. How many methods am I looking at in this method browser?
e.g. I want to open a new method browser on a subset of the methods I am
looking at. (The rewrite tool helps when the criteria are syntax-based, but
...)
and many more things.
 

  _  

From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of
Stephane Ducasse
Sent: March 9, 2017 03:37
To: Any question about pharo is welcome; Pharo Development List
Subject: [Pharo-users] What is the craziest bug you ever face


Hi guys 

During the DSU workshop we were brainstorming about what are the most
difficult bugs we faced and what are the conceptual tools that would have
helped you.

Stef


Re: [Pharo-users] What is the craziest bug you ever face

2017-03-10 Thread werner kassens

and occasionally memory leaks
werner

On 03/10/2017 04:02 PM, werner kassens wrote:

Hi Stephane,
bugs i found difficult to debug are eg (1) red cross of death bugs in 
morphs, (2) bugs that are not visible any more because they are caught 
and dealt with in the wrong place and then produce wrong results 
instead of errors, and (3) bugs in iterative algos that work eg with 
#while and that pop up eg in the 1000th iteration, where i first have 
to add a counter to know that it happens in the 1000th iteration and 
then have to add a #halt if counter=999 to see what happens then in 
the debugger.

werner

On 03/09/2017 12:36 PM, Stephane Ducasse wrote:

Hi guys

During the DSU workshop we were brainstorming about what are the most 
difficult bugs we faced and what are the conceptual tools that would 
have helped you.


Stef










Re: [Pharo-users] What is the craziest bug you ever face

2017-03-10 Thread werner kassens

Hi Stephane,
bugs i found difficult to debug are eg (1) red cross of death bugs in 
morphs, (2) bugs that are not visible any more because they are caught 
and dealt with in the wrong place and then produce wrong results instead 
of errors, and (3) bugs in iterative algos that work eg with #while and 
that pop up eg in the 1000th iteration, where i first have to add a 
counter to know that it happens in the 1000th iteration and then have to 
add a #halt if counter=999 to see what happens then in the debugger.

werner

On 03/09/2017 12:36 PM, Stephane Ducasse wrote:

Hi guys

During the DSU workshop we were brainstorming about what are the most 
difficult bugs we faced and what are the conceptual tools that would 
have helped you.


Stef






Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Evan Donahue
Yeah, that sounds right. The debugger needed to be able to step through lines
of code like normal (to debug the logic framework) as well as to step
through search steps (to debug programs written in the framework) defined in
terms of the system semantics (since bugs could be in either program or
framework at this point). It also needed to recognize the semantics not only
of the framework, but of the debugging interaction, because I needed it to
step through the search space until it arrived at a particular leaf of the
search frontier. The framework itself basically does a breadth-first-search,
and it doesn't care when a particular frontier node will be visited again,
but if I am tracing the search in one particular part of the space for the
very specific purposes of debugging, only then do I need the debugger to
recognize the semantics of when we are expanding a child of a given frontier
node. 

I also played with the idea of actually changing the search order while
debugging, which would change the semantics of the actual running program to
make it turn out a certain way so that I could observe rare behavior. The
analogy would be manually setting a random number in the debugger, except
that it might take more than a single instance variable assignment to change
the structure of a search tree.

Evan



--
View this message in context: 
http://forum.world.st/What-is-the-craziest-bug-you-ever-face-tp4937984p4938057.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread stepharong

I understand well your point :)

On Thu, 09 Mar 2017 21:30:21 +0100, Dale Henrichs  
 wrote:




The attached screnshot  illustrates why I like having text instead of  
pngs ... being able to highlight the association value (-5.00->5.00) is  
very useful when identifying the entries >in a btree associated with the  
association (the entries at 13, 16,19, and 22)...


On 03/09/2017 11:34 AM, Dale Henrichs wrote:


Stef,

One of the things that I do all of the time when trying to debug  
particularly difficult problems is to keep a "bug notebook".  My "bug  
notebook" is a text file where I >>record information gleaned from an  
inspector intermixed with comments, code and observations...


I've attached an example from a couple of days ago (bug_notebook.txt).
The particular problem I am working on involves btree nodes being  
improperly updated during index object updates. Each btree node is  
basically a 2000+ >>element Array ... so there is a lot of data to deal  
with .
In the notebook, I extract the interesting entries from the btree node  
and record the original set of values and then record the updated set  
of values and in this >>particular case I was able to "see" that after  
the update I had 4 entries that were not properly deleted ...
In addition to recording the interesting chunks of large data  
structures, I often end up with chunks of stacks from the debugger,  
copies of a inspector panes in my >>"bug notebooks" and chunks of code  
...


Over the last several weeks I have been tackling different sets of bugs  
in this same area and I have been keeping a time-stamped log of the  
work that I've done >>along the way (analysis_notebook.txt) ... in this  
notebook I've bee recording test results and branch/SHA information so  
that I can easily reference different >>versions of methods as I work  
through fixing bugs and managing regressions ... There's  a section in  
the notebook where I've record performance information, so >>that when  
I have finished work on this set of bugs, I can evaluate how I've  
impacted performance ... Finally at the very bottom of the notebook,  
I've recorded a >>simple todo-list ...
The  notebooks are on a shared disk so that I can access and update the  
"bug notebook" when I am working from home on a mac or at work from a  
linux box ...  
I rely on the fact that I am working with text and not images ... since  
I like to copy and paste as well as search for particular strings in  
the data from the inspector ... >>in the bug_notebook  I searched for  
the `victim` string in the text output  from an inspector ...


I have come to really depend upon bug notebooks when addressing  
difficult bugs and I think that support for creating and maintaining  
bug notebooks would be a >>valuable addition the the debugging  
arsenal...


Dale

On 03/09/2017 10:50 AM, stepharong wrote:

Thanks you all.

The idea is that we want to see how we cn improve our debugging  
arsenal.So it is important that your scenario give use some hints.It  
is difficult to convey what we are really looking for :)





Hi guys
During the DSU workshop we were brainstorming about what are the most  
difficult bugs we faced and what are the conceptual tools that would  
have helped you.


Stef




--Using Opera's mail client: http://www.opera.com/mail/








--
Using Opera's mail client: http://www.opera.com/mail/

Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Dale Henrichs
The attached screnshot  illustrates why I like having text instead of 
pngs ... being able to highlight the association value (-5.00->5.00) is 
very useful when identifying the entries in a btree associated with the 
association (the entries at 13, 16,19, and 22)...



On 03/09/2017 11:34 AM, Dale Henrichs wrote:


Stef,

One of the things that I do all of the time when trying to debug 
particularly difficult problems is to keep a "bug notebook".  My "bug 
notebook" is a text file where I record information gleaned from an 
inspector intermixed with comments, code and observations...


I've attached an example from a couple of days ago (bug_notebook.txt).

The particular problem I am working on involves btree nodes being 
improperly updated during index object updates. Each btree node is 
basically a 2000+ element Array ... so there is a lot of data to deal 
with .


In the notebook, I extract the interesting entries from the btree node 
and record the original set of values and then record the updated set 
of values and in this particular case I was able to "see" that after 
the update I had 4 entries that were not properly deleted ...


In addition to recording the interesting chunks of large data 
structures, I often end up with chunks of stacks from the debugger, 
copies of a inspector panes in my "bug notebooks" and chunks of code ...


Over the last several weeks I have been tackling different sets of 
bugs in this same area and I have been keeping a time-stamped log of 
the work that I've done along the way (analysis_notebook.txt) ... in 
this notebook I've bee recording test results and branch/SHA 
information so that I can easily reference different versions of 
methods as I work through fixing bugs and managing regressions ... 
There's  a section in the notebook where I've record performance 
information, so that when I have finished work on this set of bugs, I 
can evaluate how I've impacted performance ... Finally at the very 
bottom of the notebook, I've recorded a simple todo-list ...


The  notebooks are on a shared disk so that I can access and update 
the "bug notebook" when I am working from home on a mac or at work 
from a linux box ...


I rely on the fact that I am working with text and not images ... 
since I like to copy and paste as well as search for particular 
strings in the data from the inspector ... in the bug_notebook  I 
searched for the `victim` string in the text output  from an inspector ...


I have come to really depend upon bug notebooks when addressing 
difficult bugs and I think that support for creating and maintaining 
bug notebooks would be a valuable addition the the debugging arsenal...


Dale

On 03/09/2017 10:50 AM, stepharong wrote:

Thanks you all.

The idea is that we want to see how we cn improve our debugging arsenal.
So it is important that your scenario give use some hints.
It is difficult to convey what we are really looking for :)



Hi guys

During the DSU workshop we were brainstorming about what are the
most difficult bugs we faced and what are the conceptual tools
that would have helped you.

Stef




--
Using Opera's mail client: http://www.opera.com/mail/






Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread stepharong


we were talking during the workshop and on the simple things to help.

- watch points with history of the value.
- stop if the value of an instance variable is getting irregular i.e.,
   = you get integer and suddenly inside you get a float!
   1 1 1 1 2 3 4 2 2 1 1 12 2  3 32 1 1 1 1  22 1 1 1 1 1 1 1 2  33  
1.2 2 3 3 4 4
- start to monitor (put alarm/breakpoints)  newly created instances from a  
point


I hope that soon we will have instance specific features of the Ressia  
debugger
in Pharo debuger (stop the next time this object receive a message, stop  
the next

tie this object changes any of its instance variables).

Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread stepharong
On Thu, 09 Mar 2017 20:53:48 +0100, Evan Donahue   
wrote:



I actually have a whole class of bugs and elements of a very Pharo-y
solution.

I do a lot of work in a logic programming framework. Being a logic
programming framework, it does not execute the code you write in a
start-to-finish manner, but executes a few lines here, then jumps around  
and

executes a few lines there. As a result, if you are trying to trace the
evolution of a particular branch in the search tree, you can only follow  
one

or two operations at a time in the debugger, then that branch gets put in
the queue and you may have to step through tens or hundreds of other
searches before you get back to it (if you can even recognize which  
branch

you were following when it comes around again). This makes debugging
basically impossible in every other language this framework has been  
ported
to, and the standard strategy is just to stare at the code. Pharo's  
debugger

was already a step up, but it still wasn't nearly up to the task.


did you think about adapting the debugger to your execution semantics?
... I read that you did it
Excellent!



I had been trying to get a particularly complex program to work for  
several
days with no success, at which point I decided to investigate the  
moldable

debugger framework. It took me several more days of going through the
debugger code in different versions and emailing with its developers to  
get

something working, which just speaks to the state that framework and
documentation happened to be in at the time, but when I did get it  
working I
found the bug in a few minutes. I essentially set up a visual depiction  
of
the search tree where I could click on a branch and have the framework  
run until that branch came up again to the front of the queue. This  
meant I
could trace execution linearly by giving myself a way to get a handle on  
the control flow via a visual interface. I have since changed my  
framework

and broken the debugger code, but I definitely intend to try to get that

rigged up again when the logic system is in a more polished form.

Admittedly, many programs probably do not have the problem that their
control flow is so complex that a normal linear debugger is too  
difficult to

understand, but on some level the ability to specify a debugging control
flow outside the execution of the program itself seems like a pretty
powerful idea, and something Pharo should be very well suited for with  
its
interactivity/reflectivity. Maybe there would be more complex,  
logic-based

programs if they weren't so hard to write!

Evan



--
View this message in context:  
http://forum.world.st/What-is-the-craziest-bug-you-ever-face-tp4937984p4938039.html

Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.




--
Using Opera's mail client: http://www.opera.com/mail/



Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Evan Donahue
I should add that users of the logic framework from non-smalltalk languages
were very impressed by the potential.

Evan



--
View this message in context: 
http://forum.world.st/What-is-the-craziest-bug-you-ever-face-tp4937984p4938040.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread stepharong

nice ideas!




Stef,

One of the things that I do all of the time when trying to debug  
particularly difficult problems is to keep a "bug notebook".  My "bug  
notebook" is a text file where I record >information gleaned from an  
inspector intermixed with comments, code and observations...


I've attached an example from a couple of days ago (bug_notebook.txt).
The particular problem I am working on involves btree nodes being  
improperly updated during index object updates. Each btree node is  
basically a 2000+ element Array ... so >there is a lot of data to deal  
with .
In the notebook, I extract the interesting entries from the btree node  
and record the original set of values and then record the updated set of  
values and in this particular case I >was able to "see" that after the  
update I had 4 entries that were not properly deleted ...
In addition to recording the interesting chunks of large data  
structures, I often end up with chunks of stacks from the debugger,  
copies of a inspector panes in my "bug >notebooks" and chunks of code ...


Over the last several weeks I have been tackling different sets of bugs  
in this same area and I have been keeping a time-stamped log of the work  
that I've done along the way >(analysis_notebook.txt) ... in this  
notebook I've bee recording test results and branch/SHA information so  
that I can easily reference different versions of methods as I work  
>through fixing bugs and managing regressions ... There's  a section in  
the notebook where I've record performance information, so that when I  
have finished work on this set of >bugs, I can evaluate how I've  
impacted performance ... Finally at the very bottom of the notebook,  
I've recorded a simple todo-list ...
The  notebooks are on a shared disk so that I can access and update the  
"bug notebook" when I am working from home on a mac or at work from a  
linux box ...  
I rely on the fact that I am working with text and not images ... since  
I like to copy and paste as well as search for particular strings in the  
data from the inspector ... in the >bug_notebook  I searched for the  
`victim` string in the text output  from an inspector ...


I have come to really depend upon bug notebooks when addressing  
difficult bugs and I think that support for creating and maintaining bug  
notebooks would be a valuable >addition the the debugging arsenal...


Dale

On 03/09/2017 10:50 AM, stepharong wrote:

Thanks you all.

The idea is that we want to see how we cn improve our debugging arsenal. 
So it is important that your scenario give use some hints.It is  
difficult to convey what we are really looking for :)





Hi guys
During the DSU workshop we were brainstorming about what are the most  
difficult bugs we faced and what are the conceptual tools that would  
have helped >>>you.


Stef




--Using Opera's mail client: http://www.opera.com/mail/






--
Using Opera's mail client: http://www.opera.com/mail/

Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Evan Donahue
I actually have a whole class of bugs and elements of a very Pharo-y
solution. 

I do a lot of work in a logic programming framework. Being a logic
programming framework, it does not execute the code you write in a
start-to-finish manner, but executes a few lines here, then jumps around and
executes a few lines there. As a result, if you are trying to trace the
evolution of a particular branch in the search tree, you can only follow one
or two operations at a time in the debugger, then that branch gets put in
the queue and you may have to step through tens or hundreds of other
searches before you get back to it (if you can even recognize which branch
you were following when it comes around again). This makes debugging
basically impossible in every other language this framework has been ported
to, and the standard strategy is just to stare at the code. Pharo's debugger
was already a step up, but it still wasn't nearly up to the task. 

I had been trying to get a particularly complex program to work for several
days with no success, at which point I decided to investigate the moldable
debugger framework. It took me several more days of going through the
debugger code in different versions and emailing with its developers to get
something working, which just speaks to the state that framework and
documentation happened to be in at the time, but when I did get it working I
found the bug in a few minutes. I essentially set up a visual depiction of
the search tree where I could click on a branch and have the framework run
until that branch came up again to the front of the queue. This meant I
could trace execution linearly by giving myself a way to get a handle on the
control flow via a visual interface. I have since changed my framework and
broken the debugger code, but I definitely intend to try to get that rigged
up again when the logic system is in a more polished form.

Admittedly, many programs probably do not have the problem that their
control flow is so complex that a normal linear debugger is too difficult to
understand, but on some level the ability to specify a debugging control
flow outside the execution of the program itself seems like a pretty
powerful idea, and something Pharo should be very well suited for with its
interactivity/reflectivity. Maybe there would be more complex, logic-based
programs if they weren't so hard to write!

Evan



--
View this message in context: 
http://forum.world.st/What-is-the-craziest-bug-you-ever-face-tp4937984p4938039.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Dale Henrichs

Stef,

One of the things that I do all of the time when trying to debug 
particularly difficult problems is to keep a "bug notebook".  My "bug 
notebook" is a text file where I record information gleaned from an 
inspector intermixed with comments, code and observations...


I've attached an example from a couple of days ago (bug_notebook.txt).

The particular problem I am working on involves btree nodes being 
improperly updated during index object updates. Each btree node is 
basically a 2000+ element Array ... so there is a lot of data to deal 
with .


In the notebook, I extract the interesting entries from the btree node 
and record the original set of values and then record the updated set of 
values and in this particular case I was able to "see" that after the 
update I had 4 entries that were not properly deleted ...


In addition to recording the interesting chunks of large data 
structures, I often end up with chunks of stacks from the debugger, 
copies of a inspector panes in my "bug notebooks" and chunks of code ...


Over the last several weeks I have been tackling different sets of bugs 
in this same area and I have been keeping a time-stamped log of the work 
that I've done along the way (analysis_notebook.txt) ... in this 
notebook I've bee recording test results and branch/SHA information so 
that I can easily reference different versions of methods as I work 
through fixing bugs and managing regressions ... There's  a section in 
the notebook where I've record performance information, so that when I 
have finished work on this set of bugs, I can evaluate how I've impacted 
performance ... Finally at the very bottom of the notebook, I've 
recorded a simple todo-list ...


The  notebooks are on a shared disk so that I can access and update the 
"bug notebook" when I am working from home on a mac or at work from a 
linux box ...


I rely on the fact that I am working with text and not images ... since 
I like to copy and paste as well as search for particular strings in the 
data from the inspector ... in the bug_notebook  I searched for the 
`victim` string in the text output  from an inspector ...


I have come to really depend upon bug notebooks when addressing 
difficult bugs and I think that support for creating and maintaining bug 
notebooks would be a valuable addition the the debugging arsenal...


Dale

On 03/09/2017 10:50 AM, stepharong wrote:

Thanks you all.

The idea is that we want to see how we cn improve our debugging arsenal.
So it is important that your scenario give use some hints.
It is difficult to convey what we are really looking for :)



Hi guys

During the DSU workshop we were brainstorming about what are the
most difficult bugs we faced and what are the conceptual tools
that would have helped you.

Stef




--
Using Opera's mail client: http://www.opera.com/mail/


tMultiEnumeratedIndexUpdateD_ModifyingInstVarAtOffset_to
dkh 3/8/2017 16:14
--
Step one is to understand how things were removed incorrectly ... and then go 
from there
-
victim key value: commonAssoc.
commonAssoc-> -63.00->63.00
commonBinding  -> 63.00
victim -> -60.00->60.00->-63.00->63.00->-60.00->60.00->-63.00->63.00
-
  reachable:
1@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
2@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
3@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
4@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
-
-
dkh 3/8/2017 16:14
--
-
before update:
victim -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
-
73@   -> -60.00->-60.00
74@   -> -60.00
75@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
76@   -> -60.00->-60.00
77@   -> -60.00
78@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
79@   -> -60.00->-60.00
80@   -> -60.00
81@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
82@   -> -60.00->-60.00
83@   -> -60.00
84@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
85@   -> -60.00->60.00
86@   -> -60.00
87@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
88@   -> -60.00->60.00
89@   -> -60.00
90@   -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
---
1507@ -> -60.00->60.00
1508@ -> 60.00
1509@ -> -60.00->60.00->-60.00->-60.00->-60.00->60.00->-60.00->-60.00
1510@ -> -60.00->60.00
1511@ 

Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread stepharong

Thanks you all.

The idea is that we want to see how we cn improve our debugging arsenal.
So it is important that your scenario give use some hints.
It is difficult to convey what we are really looking for :)




Hi guys

During the DSU workshop we were brainstorming about what are the most  
difficult bugs we faced and what are the conceptual tools that would  
have helped you.


Stef




--
Using Opera's mail client: http://www.opera.com/mail/

Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Igor Stasenko
I don't think my reply will be anything useful, but as to me the most
craziest bug is metabug, i.e. when
system doesn't provides any means to debug things. :)

As for regular bugs .. it is quite hard to remember anything i wasn't able
to deal with, given enough time & effort, and then emphasize single case
over the rest.
And since human brains tend to forget unpleasant things, there's not much
details to tell and remember.



On 9 March 2017 at 13:36, Stephane Ducasse  wrote:

> Hi guys
>
> During the DSU workshop we were brainstorming about what are the most
> difficult bugs we faced and what are the conceptual tools that would have
> helped you.
>
> Stef
>



-- 
Best regards,
Igor Stasenko.


Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Nicolai Hess
2017-03-09 12:36 GMT+01:00 Stephane Ducasse :

> Hi guys
>
> During the DSU workshop we were brainstorming about what are the most
> difficult bugs we faced and what are the conceptual tools that would have
> helped you.
>
> Stef
>

https://pharo.fogbugz.com/f/cases/14332/use-ast-not-parseTree-so-we-benefit-from-the-ASTCache#BugEvent.113561
Running a RBLintRule modified the (cached) AST of this methods code. So,
even if the compiled method did not changed, and the "real" source code did
not changed, you actually see
the source code from the modified AST.

There are a couple of things which went wrong resp. make this bug difficult:
1. A LintRule that just should *check* the code, actually created a
transformation somewhere behind the scene (Ok, it is a
RBTransformationRule, and originally used for code refactoring as well)
2. As long as we *analyze* code, the real code (string/ast/source) should
be considered immutable
3. the modified AST was cached
4. what-you-see-is-not-what-you-get. We are (or I am) used to consider the
system browser a tool for view and edit methods source code. If the code we
see isn't actually the methods source, but another representation of some
kind of (cached) model (formatted AST-node-source code), it would be good
to have some way to indicate this (switch between "raw"-code / model-code /
ast-node-code).


Re: [Pharo-users] What is the craziest bug you ever face

2017-03-09 Thread Dimitris Chloupis
For me it was when I was making the CPP library. CPP for those that do not
know is a library I made that allows Pharo to control a C++ application.
Its a very simple IPC bridge using shared memory mapped files.

I was surprised how easy it was to make it from the C++ side
Pharo side was a different story. UFFI is brilliantly simple to use BUT, as
much as the Pharo rocks for debugging Pharo code it works under one caveat.

The caveat being that your code makes no usage of UFFI or any FFI. Because
the Pharo debugger has no means to debug UFFI. People may not realize it
but practically UFFI is C coding. It make look like your usual Pharo code
but make no mistake its C all the way. So the practice is to make sure the
code works in C first.

However if it works in C but for some strange reason it makes Pharo freak
out you are all by yourself. Pharo code that can crash Pharo is the one
that needs debugging the most.

So to find these bug which fortunately there were not many I had to crash
Pharo countless times and move extremely slow and step by step. None the
less I success was the final result and I learned a ton in the process.

On Thu, Mar 9, 2017 at 1:38 PM Stephane Ducasse 
wrote:

> Hi guys
>
> During the DSU workshop we were brainstorming about what are the most
> difficult bugs we faced and what are the conceptual tools that would have
> helped you.
>
> Stef
>