| Summary: | Blur filter crashes if vertical component is adjusted independent of horizontal. Y>X | ||
|---|---|---|---|
| Product: | [Applications] krita | Reporter: | Stuart Dickson <stuartmd> |
| Component: | Filters | Assignee: | Stuart Dickson <stuartmd> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | steamtik |
| Priority: | NOR | ||
| Version First Reported In: | git master (please specify the git hash!) | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Microsoft Windows | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
Identified issue: kritablurfilter.dll!KisBlurFilter::processImpl passes width/height as aspect ratio to KisCircleMaskGenerator/KisRectangleMaskGenerator, which where height>width gets rounded to 0. (currently testing fix prior to commit) Multiple render passes remains an issue, along with seemingly slow performance on small datasets, particularly when X is much greater than Y. (e.g. 20x5) |
Repeatable crash. 1. Create an image (8-bit RGB) 2. Select Blur Filter 3. Unlock horz/vertical components 4. Adjust vertical component (crash) The stack trace is: > kritaimage.dll!KisConvolutionWorkerSpatial<RepeatIteratorFactory>::loadPixelToCache(double * * cache, const unsigned char * data, int index) Line 53 C++ kritaimage.dll!KisConvolutionWorkerSpatial<RepeatIteratorFactory>::moveKernelRight(KisSharedPtr<KisRepeatVLineIteratorPixelBase<KisVLineIterator2> > & kitSrc, double * * pixelPtrCache) Line 327 C++ kritaimage.dll!KisConvolutionWorkerSpatial<RepeatIteratorFactory>::execute(const KisSharedPtr<KisConvolutionKernel> kernel, const KisSharedPtr<KisPaintDevice> src, QPoint srcPos, QPoint dstPos, QSize areaSize, const QRect & dataRect) Line 176 C++ kritaimage.dll!KisConvolutionPainter::applyMatrix(const KisSharedPtr<KisConvolutionKernel> kernel, const KisSharedPtr<KisPaintDevice> src, QPoint srcPos, QPoint dstPos, QSize areaSize, KisConvolutionBorderOp borderOp) Line 150 C++ kritablurfilter.dll!KisBlurFilter::processImpl(KisSharedPtr<KisPaintDevice> device, const QRect & rect, const KisFilterConfiguration * config, KoUpdater * progressUpdater) Line 108 C++ kritaui.dll!KisFilterStrokeStrategy::doStrokeCallback(KisStrokeJobData * data) Line 106 C++ kritaimage.dll!KisUpdateJobItem::run() Line 62 C++ This seems to occur for the condition y>x; If the program crashes with preview enabled and y>x then the blur filter crashes prior to the display of the dialog. for y<x then the filter time takes an usually long time even for a small 1024x1024 single layer file. During this time, the user can see the layer change progress bar applying numerous times with a main level of progress which slowly increments but then seems to update from a slightly lower progress.