SlideShare a Scribd company logo
1 of 29
Download to read offline
Tommaso Dal Sasso
Andrea Mocci
Michele Lanza
University of Lugano
Misery Loves Company
CrowdStacking Traces to Aid Problem Detection
SANER 2015
Development
Stack Traces
Stack Traces
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueIn:put:during:
EpCurrentEvent>>value:during:
BlockClosure>>triggering:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluateSelectionAndDo:
SmalltalkEditor>>evaluateSelection
PluggableTextMorph>>doIt
PluggableTextMorph>>handleEdit:
TextMorphForEditView>>handleEdit:
PluggableTextMorph>>handleEdit:
PluggableTextMorph>>doIt
SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn:
BlockClosure>>cull:
BlockClosure>>cull:cull:
BlockClosure>>cull:cull:cull:
KMCategoryBinding>>completeMatch:buffer:
KMKeymap>>notifyCompleteMatchTo:buffer:
Array>>do:
KMKeymap>>notifyCompleteMatchTo:buffer:
KMKeymap>>onMatchWith:notify:andDo:
KMCategory>>onMatchWith:notify:andDo:
Stack Traces
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueIn:put:during:
EpCurrentEvent>>value:during:
BlockClosure>>triggering:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluateSelectionAndDo:
SmalltalkEditor>>evaluateSelection
PluggableTextMorph>>doIt
PluggableTextMorph>>handleEdit:
TextMorphForEditView>>handleEdit:
PluggableTextMorph>>handleEdit:
PluggableTextMorph>>doIt
SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn:
BlockClosure>>cull:
BlockClosure>>cull:cull:
BlockClosure>>cull:cull:cull:
KMCategoryBinding>>completeMatch:buffer:
KMKeymap>>notifyCompleteMatchTo:buffer:
Array>>do:
KMKeymap>>notifyCompleteMatchTo:buffer:
KMKeymap>>onMatchWith:notify:andDo:
KMCategory>>onMatchWith:notify:andDo:
Can we use this data?
Stack Traces
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
SmallInteger>>/
UndefinedObject>>DoIt
OpalCompiler>>evaluate
BlockClosure>>ensure:
EpCurrentEvent>>valueI
n:put:during:
EpCurrentEvent>>value:d
uring:
BlockClosure>>triggering
:
OpalCompiler>>evaluate
SmalltalkEditor>>evaluat
Development Data
ShoreLine Reporter
A reporting tool for Pharo
Collected Data
Date
Author Name Stack Trace
ClassName>>method:
Version
(date, update, name)
June — November 2014
# of stack traces 7,532
# of lines in all stack traces 252,668
# of developers 8
average lines of a stack trace 34
size of the longest stack trace 314
Using the Data
Bugs
Understand Execution
Community
Clustering Stack Traces
Vector Space Model
ClassName>>method
ClassName>>method
ClassName>>method
…
<1,0,1,1,…>
Cosine similarity
distance between two stack traces
Archetype Popularity
UndefinedObject»doesNotUnderstand: 1,585
UndefinedObject»doesNotUnderstand: 647
UndefinedObject»DoIt 619
… …
SystemDictionary»errorKeyNotFound: 71
MouseWheelEvent»doesNotUnderstand: 69
UndefinedObject»doesNotUnderstand: 57
NBGLFrameBuffer»error: 41
Language features
Anomalies
Match with the Bug Tracker
Stack Traces Bug Tracker
23
‣ Specific project
‣ Misuse of API
‣ Untracked Bug
‣ Bug reports related
to the exception
Filtered
Stack Traces
15
No match
8
Match
The case of Bug #12973
PluggableButtonMorph(Morph)>>handleKeyDown:
KeyboardEvent>>sentTo:
PluggableButtonMorph(Morph)>>handleEvent:
PluggableButtonMorph(Morph)>>handleFocusEvent:
[

ActiveHand := self.

ActiveEvent := anEvent.

result := focusHolder handleFocusEvent: (anEvent transformedBy:
(focusHolder transformedFrom: self)) ] in
HandMorph>>sendFocusEvent:to:clear:
BlockClosure>>on:do:
WorldMorph(PasteUpMorph)>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[ :h |

ActiveHand := h.

h processEvents.

Description
Discussion
Patch
Resolution
Stack Trace
Use of Related Bug Reports
‣ Give context to the current error
‣ Support the debugging process
‣ Provide feedback on the status of a defect
‣ Support understanding of undocumented code
Crowdstacking Traces
Using the activity of the community to help the code
development
Provide a smart environment

to deal with software defects
Build a dataset of fresh execution data
Crowdstacking Traces
http://shoreline.inf.usi.ch/

More Related Content

Similar to Misery Loves Company

exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
tutorialsruby
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
tutorialsruby
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
priyankazope
 
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Igor Moochnick
 

Similar to Misery Loves Company (20)

ZooKeeper Recipes and Solutions
ZooKeeper Recipes and SolutionsZooKeeper Recipes and Solutions
ZooKeeper Recipes and Solutions
 
ZooKeeper Recipes and Solutions
ZooKeeper Recipes and SolutionsZooKeeper Recipes and Solutions
ZooKeeper Recipes and Solutions
 
JavaScript Best Pratices
JavaScript Best PraticesJavaScript Best Pratices
JavaScript Best Pratices
 
JUNit Presentation
JUNit PresentationJUNit Presentation
JUNit Presentation
 
No Hugging, No Learning
No Hugging, No LearningNo Hugging, No Learning
No Hugging, No Learning
 
Sandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooksSandboxie process isolation with kernel hooks
Sandboxie process isolation with kernel hooks
 
Need for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applicationsNeed for Async: Hot pursuit for scalable applications
Need for Async: Hot pursuit for scalable applications
 
Session #6 loaders and adapters
Session #6  loaders and adaptersSession #6  loaders and adapters
Session #6 loaders and adapters
 
Magento++
Magento++Magento++
Magento++
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
 
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-bas...
 
TinyOS 2.1 tutorial at IPSN 2009
TinyOS 2.1 tutorial at IPSN 2009TinyOS 2.1 tutorial at IPSN 2009
TinyOS 2.1 tutorial at IPSN 2009
 
Jdk Tools For Performance Diagnostics
Jdk Tools For Performance DiagnosticsJdk Tools For Performance Diagnostics
Jdk Tools For Performance Diagnostics
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Introduction To Programming IP5
Introduction To Programming IP5Introduction To Programming IP5
Introduction To Programming IP5
 
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
Caliburn.micro jump start composite applications for WPF, Silverlight and WP7
 
Owasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsOwasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projects
 
Node.js Anti Patterns
Node.js Anti PatternsNode.js Anti Patterns
Node.js Anti Patterns
 
State of Akka 2017 - The best is yet to come
State of Akka 2017 - The best is yet to comeState of Akka 2017 - The best is yet to come
State of Akka 2017 - The best is yet to come
 
Finding bugs in the code of LLVM project with the help of PVS-Studio
Finding bugs in the code of LLVM project with the help of PVS-StudioFinding bugs in the code of LLVM project with the help of PVS-Studio
Finding bugs in the code of LLVM project with the help of PVS-Studio
 

Recently uploaded

一比一原版纽卡斯尔大学毕业证成绩单如何办理
一比一原版纽卡斯尔大学毕业证成绩单如何办理一比一原版纽卡斯尔大学毕业证成绩单如何办理
一比一原版纽卡斯尔大学毕业证成绩单如何办理
cyebo
 
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotecAbortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 
一比一原版西悉尼大学毕业证成绩单如何办理
一比一原版西悉尼大学毕业证成绩单如何办理一比一原版西悉尼大学毕业证成绩单如何办理
一比一原版西悉尼大学毕业证成绩单如何办理
pyhepag
 
Fuzzy Sets decision making under information of uncertainty
Fuzzy Sets decision making under information of uncertaintyFuzzy Sets decision making under information of uncertainty
Fuzzy Sets decision making under information of uncertainty
RafigAliyev2
 
一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理
pyhepag
 
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
pyhepag
 
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
pyhepag
 
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Valters Lauzums
 

Recently uploaded (20)

2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Call2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Call
 
Machine Learning for Accident Severity Prediction
Machine Learning for Accident Severity PredictionMachine Learning for Accident Severity Prediction
Machine Learning for Accident Severity Prediction
 
Generative AI for Trailblazers_ Unlock the Future of AI.pdf
Generative AI for Trailblazers_ Unlock the Future of AI.pdfGenerative AI for Trailblazers_ Unlock the Future of AI.pdf
Generative AI for Trailblazers_ Unlock the Future of AI.pdf
 
How I opened a fake bank account and didn't go to prison
How I opened a fake bank account and didn't go to prisonHow I opened a fake bank account and didn't go to prison
How I opened a fake bank account and didn't go to prison
 
一比一原版纽卡斯尔大学毕业证成绩单如何办理
一比一原版纽卡斯尔大学毕业证成绩单如何办理一比一原版纽卡斯尔大学毕业证成绩单如何办理
一比一原版纽卡斯尔大学毕业证成绩单如何办理
 
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotecAbortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
 
Supply chain analytics to combat the effects of Ukraine-Russia-conflict
Supply chain analytics to combat the effects of Ukraine-Russia-conflictSupply chain analytics to combat the effects of Ukraine-Russia-conflict
Supply chain analytics to combat the effects of Ukraine-Russia-conflict
 
一比一原版西悉尼大学毕业证成绩单如何办理
一比一原版西悉尼大学毕业证成绩单如何办理一比一原版西悉尼大学毕业证成绩单如何办理
一比一原版西悉尼大学毕业证成绩单如何办理
 
Fuzzy Sets decision making under information of uncertainty
Fuzzy Sets decision making under information of uncertaintyFuzzy Sets decision making under information of uncertainty
Fuzzy Sets decision making under information of uncertainty
 
Slip-and-fall Injuries: Top Workers' Comp Claims
Slip-and-fall Injuries: Top Workers' Comp ClaimsSlip-and-fall Injuries: Top Workers' Comp Claims
Slip-and-fall Injuries: Top Workers' Comp Claims
 
一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理
 
basics of data science with application areas.pdf
basics of data science with application areas.pdfbasics of data science with application areas.pdf
basics of data science with application areas.pdf
 
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
 
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
一比一原版加利福尼亚大学尔湾分校毕业证成绩单如何办理
 
Data Visualization Exploring and Explaining with Data 1st Edition by Camm sol...
Data Visualization Exploring and Explaining with Data 1st Edition by Camm sol...Data Visualization Exploring and Explaining with Data 1st Edition by Camm sol...
Data Visualization Exploring and Explaining with Data 1st Edition by Camm sol...
 
Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)
 
Webinar One View, Multiple Systems No-Code Integration of Salesforce and ERPs
Webinar One View, Multiple Systems No-Code Integration of Salesforce and ERPsWebinar One View, Multiple Systems No-Code Integration of Salesforce and ERPs
Webinar One View, Multiple Systems No-Code Integration of Salesforce and ERPs
 
2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group Meeting2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group Meeting
 
社内勉強会資料  Mamba - A new era or ephemeral
社内勉強会資料   Mamba - A new era or ephemeral社内勉強会資料   Mamba - A new era or ephemeral
社内勉強会資料  Mamba - A new era or ephemeral
 
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
 

Misery Loves Company