Bug 336914 - Blur filter crashes if vertical component is adjusted independent of horizontal. Y>X
Summary: Blur filter crashes if vertical component is adjusted independent of horizont...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Filters (other bugs)
Version First Reported In: git master (please specify the git hash!)
Platform: unspecified Microsoft Windows
: NOR crash
Target Milestone: ---
Assignee: Stuart Dickson
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-30 21:16 UTC by Stuart Dickson
Modified: 2018-07-06 16:47 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stuart Dickson 2014-06-30 21:16:18 UTC
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.
Comment 1 Stuart Dickson 2014-06-30 23:13:57 UTC
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)