| import logging |
| |
| class FailOncePlugin(AsanSymbolizerPlugIn): |
| """ |
| This is a simple plug-in that always claims |
| that a binary can't be symbolized on the first |
| call but succeeds for all subsequent calls. |
| |
| This plug-in exists to reproduce an old bug |
| in the `asan_symbolize.py` script. |
| |
| By failing the first symbolization request |
| we used to cause an early exit in `asan_symbolize.py` |
| that didn't increment the frame counter which |
| caused subsequent symbolization attempts to |
| print the wrong frame number. |
| """ |
| def __init__(self): |
| self.should_fail = True |
| pass |
| |
| def filter_binary_path(self, path): |
| logging.info('filter_binary_path called in NoOpPlugin') |
| if self.should_fail: |
| logging.info('Doing first fail') |
| self.should_fail = False |
| return None |
| logging.info('Doing succeed') |
| return path |
| |
| register_plugin(FailOncePlugin()) |