Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OS X Yosemite with OpenCL: --enable-opencl now compiles but OCR fails #71

Closed
jbarlow83 opened this issue Jul 31, 2015 · 20 comments
Closed

Comments

@jbarlow83
Copy link

It seems that any OpenCL operation on my OS X Yosemite machine triggers attempts to allocate extremely large memory blocks and allocation failures.

The size of the attempted allocation is 1125865547108352 bytes or in hex, 0x3fff800001000, which looks special.

OpenCL otherwise works on my machine. I use the Python OpenCV library and a commercial application that uses OpenCL.

Aside from whatever is happening here, it also looks like a bug that the profile data gets written even if OpenCL fails. I highly doubt my graphics card and processor give identical performance so it looks some invalid calculation takes place and the results are then saved.

Testing --list-langs

Checking for languages in an OpenCL binary:

set -x TESSDATA_PREFIX /usr/local/Cellar/tesseract/3.03rc1_3/share   # Homebrew tesseract 3.03
/opt/tesseract-opencl/bin/tesseract --list-langs

Results

[DS] Profile file not available (tesseract_opencl_profile_devices.dat); performing profiling.

[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluation...
tesseract(9135,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
OpenCL error code is -54 at   when clEnqueueNDRangeKernel .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_ThresholdRectToPix .
[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluated
[DS]          composeRGBPixel: 1540962513.969949 (w=1.2)
[DS]            HistogramRect: 1540962513.969949 (w=2.4)
[DS]       ThresholdRectToPix: 1540962513.969949 (w=4.5)
[DS]        getLineMasksMorph: 1204940900.030019 (w=5.0)
[DS]                    Score: 18506500096.000000

[DS] Device: "GeForce GT 755M" (OpenCL) evaluation...
tesseract(9135,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
[DS] Device: "GeForce GT 755M" (OpenCL) evaluated
[DS]          composeRGBPixel: 1540962513.969949 (w=1.2)
[DS]            HistogramRect: 1540962513.969949 (w=2.4)
[DS]       ThresholdRectToPix: 1540962513.969949 (w=4.5)
[DS]        getLineMasksMorph: 1204940900.030019 (w=5.0)
[DS]                    Score: 18506500096.000000

[DS] Device: "(null)" (Native) evaluation...
[DS] Device: "(null)" (Native) evaluated
[DS]          composeRGBPixel: 256.000000 (w=1.2)
[DS]            HistogramRect: 256.000000 (w=2.4)
[DS]       ThresholdRectToPix: 256.000000 (w=4.5)
[DS]        getLineMasksMorph: 4294966736.000000 (w=5.0)
[DS]                    Score: 21474836480.000000
[DS] Scores written to file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz score is 18506500096.000000
[DS] Device[2] 1:GeForce GT 755M score is 18506500096.000000
[DS] Device[3] 0:(null) score is 21474836480.000000
[DS] Selected Device[1]: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL)
tesseract(9135,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
List of available languages (2):
eng
osd

Subsequent executions try to use the OpenCL profile results but still get errors:

[DS] Profile read from file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz score is 18506500096.000000
[DS] Device[2] 1:GeForce GT 755M score is 18506500096.000000
[DS] Device[3] 0:(null) score is 21474836480.000000
[DS] Selected Device[1]: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL)
tesseract(9139,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
List of available languages (2):
eng
osd

Testing OCR of JPEG to PDF

set -x TESSDATA_PREFIX /usr/local/Cellar/tesseract/3.03rc1_3/share   # Homebrew tesseract 3.03
/opt/tesseract-opencl/bin/tesseract tests/resources/congress.jpg tessopencl -l eng pdf

Result:

Tesseract Open Source OCR Engine v3.04.01dev with Leptonica
[DS] Profile file not available (tesseract_opencl_profile_devices.dat); performing profiling.

[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluation...
tesseract(9120,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
OpenCL error code is -54 at   when clEnqueueNDRangeKernel .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_ThresholdRectToPix .
[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluated
[DS]          composeRGBPixel: 1539474209.312102 (w=1.2)
[DS]            HistogramRect: 1539474209.312102 (w=2.4)
[DS]       ThresholdRectToPix: 1539474209.312102 (w=4.5)
[DS]        getLineMasksMorph: 1345623668.687865 (w=5.0)
[DS]                    Score: 19197859840.000000
[DS] Device: "GeForce GT 755M" (OpenCL) evaluation...
tesseract(9120,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
[DS] Device: "GeForce GT 755M" (OpenCL) evaluated
[DS]          composeRGBPixel: 1539474209.312102 (w=1.2)
[DS]            HistogramRect: 1539474209.312102 (w=2.4)
[DS]       ThresholdRectToPix: 1539474209.312102 (w=4.5)
[DS]        getLineMasksMorph: 1345623668.687865 (w=5.0)
[DS]                    Score: 19197859840.000000

[DS] Device: "(null)" (Native) evaluation...
[DS] Device: "(null)" (Native) evaluated
[DS]          composeRGBPixel: 256.000000 (w=1.2)
[DS]            HistogramRect: 256.000000 (w=2.4)
[DS]       ThresholdRectToPix: 256.000000 (w=4.5)
[DS]        getLineMasksMorph: 4294966736.000000 (w=5.0)
[DS]                    Score: 21474836480.000000
[DS] Scores written to file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz score is 19197859840.000000
[DS] Device[2] 1:GeForce GT 755M score is 19197859840.000000
[DS] Device[3] 0:(null) score is 21474836480.000000
[DS] Selected Device[1]: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL)
tesseract(9120,0x7fff7a778300) malloc: *** mach_vm_map(size=1125865547108352) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Warning in pixReadMemJpeg: work-around: writing to a temp file
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_ThresholdRectToPix .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .

Versions

tesseract 3.04.01dev
 leptonica-1.71
  libgif 4.1.6(?) : libjpeg 8d : libpng 1.6.18 : libtiff 4.0.4 : zlib 1.2.5

 OpenCL info:
  Found 1 platforms.
  Platform name: Apple.
  Version: OpenCL 1.2 (May 10 2015 19:38:45).
  Found 2 devices.
    Device 1 name: Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz.
    Device 2 name: GeForce GT 755M.
@jbarlow83
Copy link
Author

My stab in the dark at any answer is that, for some reason, the OpenCL API or ABI different from Tesseract is expecting as declared in header files.

The malloc error occurs because (openclwrapper.cpp:674) in

size_t numDevices;
clGetProgramInfo(... sizeof(numDevices), &numDevices, ...):

The call to clGetProgramInfo writes the correct value to the lower 32-bit of numDevices, but leaves uninit'ed garbage in the upper 32-bits. But even if this is correct, other OpenCL calls generated errors:

[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluation...
OpenCL error code is -54 at   when clEnqueueNDRangeKernel .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_ThresholdRectToPix .

I'd be happy to investigate further if someone can point me in the right direction.

@zdenop
Copy link
Contributor

zdenop commented Aug 24, 2015

Can you check 0c3c3ea ?

@ryanfb ryanfb mentioned this issue Aug 24, 2015
@ryanfb
Copy link
Contributor

ryanfb commented Aug 24, 2015

I currently get configure: error: Required OpenCL library not found! (associated config.log). With 3.04.00 I can compile (and seemingly use) Tesseract configured with --enable-opencl (associated config.log for 3.04.00).

@jbarlow83
Copy link
Author

@zdenop I got the same error as @ryanfb.

The consensus is that AC_CHECK_LIB doesn't play nicely with -framework. Instead you can introduce a new macro, or just bypass the check on OS X. The nice thing about frameworks is that they are internally consistent, where you never what kind of crazy library-header mismatches you might find on a *nix box.
https://lists.apple.com/archives/unix-porting/2009/Jan/msg00026.html

@jbarlow83
Copy link
Author

@zdenop I disabled the AC_CHECK_LIB(OpenCL) and replaced it with have_opencl_lib=true. That got me to a new error:

configure: error: conditional "OPENMP" was never defined.
Usually this means the macro was only invoked conditionally.

To repair that I added the required conditional:

@@ -168,12 +168,14 @@ if test "$enable_embedded" = "yes"; then
 fi

 # check whether to build OpenMP support
-AC_OPENMP
+#AC_OPENMP
 AS_IF([test "x$OPENMP_CFLAGS" != "x"],
   AM_CONDITIONAL([OPENMP], test "x$OPENMP_CFLAGS" != "x")
   AC_SUBST(AM_CPPFLAGS,"$OPENMP_CXXFLAGS")
   AC_DEFINE([OPENMP], [], [Defined when compiled with OpenMP support])
 )
+AM_CONDITIONAL([OPENMP], test "x$OPENMP_CFLAGS" != "x")
+

After autoreconf -fvi I had a working ./configure.

...and make failed with several errors of this form:

openclwrapper.cpp:3401:33: error: non-constant-expression cannot be narrowed
      from type 'int' to 'size_t' (aka 'unsigned long') in initializer list
      [-Wc++11-narrowing]
    size_t local_work_size[] = {block_size};
                                ^~~~~~~~~~

@zdenop
Copy link
Contributor

zdenop commented Aug 25, 2015

@jbarlow83: configure issues should be fixed. Which version of compiler you use?

@jbarlow83
Copy link
Author

The line if test $host_os != Darwin; then does not work because $host_os is darwin14.5.0. If this test is bypassed, configure works and make fails with a new error.

In file included from openclwrapper.cpp:11:
./openclwrapper.h:2:10: fatal error: 'allheaders.h' file not found
#include "allheaders.h"

That error occurs even though I am running env LIBLEPT_HEADERSDIR=/usr/local/include/leptonica ./configure --enable-opencl, the location of allheaders.h. Using CC=gcc-5 (homebrew gcc, not clang) also gives the header error.

Here is clang.

$ clang --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.5.0
Thread model: posix

@zdenop
Copy link
Contributor

zdenop commented Aug 26, 2015

@jbarlow83: Thanks. Unfortunatelly I do not have Mac, so I can just guess what could work :-(.
If you change test to if test $host_os != darwin; then will it help? Or to if test $host_os != darwin*; then?

regading leptonica: Try to change line if it helps:
LIBLEPT_HEADERSDIR="/usr/local/include /usr/include /opt/local/include/leptonica"
to
LIBLEPT_HEADERSDIR="/usr/local/include /usr/include /opt/local/include/"

@jbarlow83
Copy link
Author

#87 is also required. So I got to compile and apparently run successful OpenCL tests in which it selected my graphics card... but the OCR output was garbage. For example, if I had it generate a PDF, it still produced a valid PDF containing the input image, but the OCR text and its positioning was meaningless.

If I rebuild the same source with OpenCL my test file was processed correctly.

$ /opt/tesseract-opencl/bin/tesseract -l eng ~/tests/resources/LinnSequencer.jpg out

Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
[DS] Profile file not available (tesseract_opencl_profile_devices.dat); performing profiling.

[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluation...
OpenCL error code is -54 at   when clEnqueueNDRangeKernel .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannels .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_HistogramRectAllChannelsReduction .
OpenCL error code is -54 at   when clEnqueueNDRangeKernel kernel_ThresholdRectToPix .
Setting return value to -1
[DS] Device: "Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz" (OpenCL) evaluated
[DS]          composeRGBPixel: 0.000132 (w=1.2)
[DS]            HistogramRect: 340282346638528859811704183484516925440.000000 (w=2.4)
[DS]       ThresholdRectToPix: 340282346638528859811704183484516925440.000000 (w=4.5)
[DS]        getLineMasksMorph: 0.004014 (w=5.0)
[DS]                    Score: inf

[DS] Device: "GeForce GT 755M" (OpenCL) evaluation...
[DS] Device: "GeForce GT 755M" (OpenCL) evaluated
[DS]          composeRGBPixel: 0.044892 (w=1.2)
[DS]            HistogramRect: 0.026128 (w=2.4)
[DS]       ThresholdRectToPix: 0.053928 (w=4.5)
[DS]        getLineMasksMorph: 0.025597 (w=5.0)
[DS]                    Score: 0.487237

[DS] Device: "(null)" (Native) evaluation...
[DS] Device: "(null)" (Native) evaluated
[DS]          composeRGBPixel: 0.019921 (w=1.2)
[DS]            HistogramRect: 0.063245 (w=2.4)
[DS]       ThresholdRectToPix: 0.034175 (w=4.5)
[DS]        getLineMasksMorph: 0.124600 (w=5.0)
[DS]                    Score: 0.952483
[DS] Scores written to file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz score is inf
[DS] Device[2] 1:GeForce GT 755M score is 0.487237
[DS] Device[3] 0:(null) score is 0.952483
[DS] Selected Device[2]: "GeForce GT 755M" (OpenCL)
Warning in pixReadMemJpeg: work-around: writing to a temp file

@jbarlow83 jbarlow83 changed the title OS X Yosemite - OpenCL segfaults on all options, produces garbage profile data OS X Yosemite with OpenCL: --enable-opencl now compiles but OCR fails Aug 31, 2015
@jbarlow83
Copy link
Author

@zdenop Our patches to date have fixed the build, but tesseract with OpenCL on Mac outputs gibberish as the OCR results (on an image that passes normal OCR). Both the perceived position of text and output text are corrupted. However, a blank image is correctly interpreted as a being blank - for example, tesseract can properly render a blank PDF file. I take this to mean somewhere OpenCL is distorting or corrupting the input during processing.

How I can test it to narrow down where the error actually occurs?

@zdenop
Copy link
Contributor

zdenop commented Aug 31, 2015

AFAIK they should work on this. Did you get wrong result if you use binarized (2 colors) (tif?) image?

@jbarlow83
Copy link
Author

Image I used was:
https://en.wikipedia.org/wiki/LinnSequencer#/media/File:LinnSequencer_hardware_MIDI_sequencer_brochure_page_2_300dpi.jpg

Although it appears to be grayscale it looks like it's formatted as true color. Output is:

Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
[DS] Profile read from file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz score is inf
[DS] Device[2] 1:GeForce GT 755M score is 0.487237
[DS] Device[3] 0:(null) score is 0.952483
[DS] Selected Device[2]: "GeForce GT 755M" (OpenCL)
Warning in pixReadMemJpeg: work-around: writing to a temp file
OSD: Weak margin (0.53), horiz textlines, not CJK: Don't rotate.

I converted that to a 1-bit TIFF using ImageMagick. That produced no OCR output and some errors:

[snipped common header]
Page 1
OSD: Weak margin (0.17), horiz textlines, not CJK: Don't rotate.
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
Warning in pixGenerateCIData: pixs has cmap; using flate encoding
Warning in pixReadMemTiffCl: tiff page 58428720 not found

In both cases, I did output to PDF, and the PDF is formatted correct. The OCR is nonsense. When output to plain text, the OCR is also nonsense.

If Tesseract is built without OpenCL the same image works fine for OCR.

@zdenop zdenop assigned zdenop and unassigned zdenop Aug 31, 2015
@pedrocicoleme
Copy link

I tried both master and 3.04.00 with --enable-opencl on Ubuntu with Catalyst 15.7 and for my two devices (FX8120 and R9 285) the OCR also outputs a .txt but the content is only empty lines and some wrong characters. Forcing to run without opencl achieves the correct output.

When running with OpenCL on FX8120 there are no warnings or errors during execution, but there are some warnings as tiff page not found and box outside rectangle on R9 285. In the end, the (wrong) output is the same for any of them.

@ryanfb
Copy link
Contributor

ryanfb commented Aug 31, 2015

With OpenCL-enabled HEAD on OS X, I also get garbage for @jbarlow83's test image.

However if I convert PDFs to TIFF in the way I usually do for OCR with Tesseract, I can get text with OpenCL-enabled HEAD (the BW PDF for this book in this example):

convert -density 300 aesopsfables00mclo_bw.pdf -type Grayscale -compress lzw -background white +matte -depth 32 page_%05d.tif

Then OCR with e.g. for i in page_*.tif; do tesseract $i $(basename $i .tif); done works fine and produces text (in both text and PDF output modes). This also seems to work for multipage TIFFs (just convert without the %05d in the output filename), however, if I try to process a multipage TIFF during the initial OpenCL profiling run, Tesseract always crashes with a SIGABRT after the first page.

Another thing I notice though is that I also get a score of inf for my CPU on OpenCL, is this a bug that needs to be fixed in the HistogramRect/ThresholdRectToPix evaluations?

@jbarlow83
Copy link
Author

I tried tesseract -c tessedit_write_images=1 ... and got the following result. The image has the same dimensions as the input image and there is a visual correspondence of sorts between the images, but it's very mangled. First image is input, second is "tessinput.tif" after Tesseract's mangling.

@zdenop: If a read and write pointer were strobing the data by different amounts you'd get this sort of thing. This really looks it a single increment somewhere is the wrong size and should be an easy fix for someone who knew where to look in the code base (i.e. not me).

mono
tessinput

@markboettcher
Copy link

Yep, I have the same problem. Try resizing your image to powers of 2. Actually, just resize the canvas, leave the text part unchanged.You could do it with ImageMagick convert, or any image editor like Photoshop. Probably you only need to size the width to power of 2, I didn't test that, but it looks like the pitch is being miscalculated with non-power of two sized images.

@markboettcher
Copy link

Oh...didn't mention it, but I get exactly the same output as you. Bring the distorted image up in PhotoShop, Select Filter->Distort->Shear and shear top left to bottom right with Wraparound selected. Do that 2-4 times and the text will magically appear.

@markboettcher
Copy link

Look at Issue #124

@amitdo amitdo added the bug label May 27, 2016
@zdenop zdenop added the OpenCL label Sep 1, 2016
@zdenop
Copy link
Contributor

zdenop commented Oct 27, 2016

Please check master branch or commits f46dfdc and 5db7602.

@zdenop zdenop closed this as completed Nov 24, 2016
@arndttigges
Copy link

Hi folks,

i have a similar problems with the garbage output, when i enable opencl. I have checked out the current master revision (bd45b3a). also i get the mangled image with tesseract -c tessedit_write_images=1 ... command too.
The OS is Debian 64bit.

My Settings are:

tesseract 4.00.00alpha
 leptonica-1.74.1
  libjpeg 6b (libjpeg-turbo 1.3.1) : libpng 1.2.50 : libtiff 4.0.3 : zlib 1.2.8

 OpenCL info:
  Found 1 platform(s).
  Platform 1 name: NVIDIA CUDA.
  Version: OpenCL 1.1 CUDA 6.5.51.
  Found 1 device(s).
    Device 1 name: GeForce GTX 750 Ti.
 Found AVX
 Found SSE

the console output is:

Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
OSD: Weak margin (1.36) for 292 blob text block, but using orientation anyway: 0
[DS] Profile read from file (tesseract_opencl_profile_devices.dat).
[DS] Device[1] 1:GeForce GTX 750 Ti score is 0.128314
[DS] Device[2] 0:(null) score is 0.917442
[DS] Selected Device[1]: "GeForce GTX 750 Ti" (OpenCL)
Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
OSD: Weak margin (5.65) for 486 blob text block, but using orientation anyway: 3
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box

My Question is: do i have a malconfigurated system or is it a bug?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants