AutomationEditor::paintEvent() - Division with zero
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
On master compiled with `-DCMAKE_BUILD_TYPE=Debug -DWANT_DEBUG_FPE=ON`
```
(gdb) frame 0
#0 AutomationEditor::paintEvent (this=0x55555a4a1ca0, pe=0x7fffffffbaa0)
at /home/zonkmachine/builds/lmms/src/gui/editors/AutomationEditor.cpp:1470
1470 / (float)( m_maxLevel - m_minLevel ) ) );
(gdb) print m_maxLevel
$2 = 0
(gdb) print m_minLevel
$3 = 0
(gdb)
```
https://github.com/LMMS/lmms/blob/3ad0462d44196d6e48fd66350b6af46860547c5f/src/gui/editors/AutomationEditor.cpp#L1470
I don't know what's best here. I can make the offending program file run in gdb by initializing `m_minLevel` to 0 and `m_maxLevel` to 1.
#### Logs
Click to expand
Thread 1 "lmms" received signal SIGFPE, Arithmetic exception.
AutomationEditor::paintEvent (this=0x55555a4a1ca0, pe=0x7fffffffbaa0)
at /home/zonkmachine/builds/lmms/src/gui/editors/AutomationEditor.cpp:1470
1470 / (float)( m_maxLevel - m_minLevel ) ) );
(gdb) bt full
#0 AutomationEditor::paintEvent(QPaintEvent*) (this=0x55555a4a1ca0, pe=0x7fffffffbaa0)
at /home/zonkmachine/builds/lmms/src/gui/editors/AutomationEditor.cpp:1470
m = {val = 93825075388241}
opt =
{version = 1, type = 0, state = {i = 1}, direction = Qt::LeftToRight, rect = {x1 = 0, y1 = 0, x2 = 851, y2 = 304}, fontMetrics = {d = {d = 0x555555f04c00}}, palette = {static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff6ec6c80, data = 0x7ffff6ec6b20, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x55555adb2a50, {data = {current_group = 2, resolve_mask = 1050435}, for_faster_swapping_dont_use = 16806962}}, styleObject = 0x55555a4a1ca0}
p =
{static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7ffff6ed1e00, data = 0x7ffff6ed1d20, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55555b011c00}}
fgColor =
{cspec = QColor::Rgb, ct = {argb = {alpha = 65535, red = 65535, green = 65535, blue = 65535, pad = 0}, ahsv = {alpha = 65535, hue = 65535, saturation = 65535, value = 65535, pad = 0}, acmyk = {alpha = 65535, cyan = 65535, magenta = 65535, yellow = 65535, black = 0}, ahsl = {alpha = 65535, hue = 65535, saturation = 65535, lightness = 65535, pad = 0}, argbExtended = {alphaF16 = 65535, redF16 = 65535, greenF16 = 65535, blueF16 = 65535, pad = 0}, array = {65535, 65535, 65535, 65535, 0}}}
bgColor = {d = {d = 0x55555adb3b50}}
grid_height = 277
grid_bottom = 292
font_height = 14
text_flags = {i = 130}
sel_pos_start = 0
sel_pos_end = 0
selLevel_start = 0
selLevel_end = 0
x = 0
w = 0
y = 0
h = 0
l = 32767
cursor = 0x70552d10cfdf6f00
mousePosition = {xp = 1518173600, yp = 21845}
#1 0x00007ffff7a9a30e in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#2 0x00007ffff7a59013 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#3 0x00007ffff66491ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#4 0x00007ffff7a9263a in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5 0x00007ffff7a92e82 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7 0x00007ffff7a94002 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8 0x00007ffff7a94002 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, --Type for more, q to quit, c to continue without paging--c
QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff7a94002 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff7a941e3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff7a92b9c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff7a69f7a in () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff7a9aa37 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff7a59013 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff66491ca in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007ffff664bbc1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007ffff66a11c7 in () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00007ffff52b54db in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007ffff52b5788 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff52b5853 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007ffff66a0843 in QEventDispatcherGlib::processEvents(QFlags) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007ffff6647a4b in QEventLoop::exec(QFlags) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#36 0x00007ffff664ffc6 in QCoreApplication::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x0000555555725d1f in main(int, char**) (argc=1, argv=0x7fffffffdf38) at /home/zonkmachine/builds/lmms/src/core/main.cpp:989
coreOnly = false
fullscreen = true
exitAfterImport = false
allowRoot = false
renderLoop = false
renderTracks = false
fileToLoad = {static null = {}, d = 0x7ffff672e8a0 }
fileToImport = {static null = {}, d = 0x7ffff672e8a0 }
renderOut = {static null = {}, d = 0x7ffff672e8a0 }
profilerOutputFile = {static null = {}, d = 0x7ffff672e8a0 }
configFile = {static null = {}, d = 0x7ffff672e8a0 }
app = 0x555555c93c00
qs = {interpolation = Mixer::qualitySettings::Interpolation_SincFastest, oversampling = Mixer::qualitySettings::Oversampling_2x}
os = {m_sampleRate = 44100, m_bitRateSettings = {m_bitRate = 160, m_isVariableBitRate = false}, m_bitDepth = OutputSettings::Depth_16Bit, m_stereoMode = OutputSettings::StereoMode_JointStereo, m_compressionLevel = 0.5}
eff = ProjectRenderer::WaveFile
pos = {static null = {}, d = 0x555555f05700}
sparam = {sched_priority = 50}
sa = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {0, 140737488346936, 93824996507596, 93824998592096, 140737320570825, 140737488346576, 93824998170632, 92, 140737488346608, 1, 93824996507691, 1, 4295032831, 140737488346624, 93824996507717, 93}}, sa_flags = 4, sa_restorer = 0x0}
destroyEngine = false
ret = 32767
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/gui/editors/AutomationEditor.cpp at line 1470 and inspect where m_minLevel and m_maxLevel are initialized or updated. Reproduce with a Debug build using -DWANT_DEBUG_FPE=ON and the reported program file, then verify that AutomationEditor::paintEvent() no longer raises SIGFPE when both values are zero.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100