webgrind icon indicating copy to clipboard operation
webgrind copied to clipboard

No output after loading a cachegrind file

Open SagnikGanguly96 opened this issue 3 years ago • 12 comments

When I've tried to load cachegrind file, no output is generated in Webgrind. Here's my versions: Webgrind: 1.9 XDebug: 3.1.3 PHP: 8.1.0 OS: Windows 10 (x64)

Anyway I found the error below when clicking on "Update" button, it sends a XHR request and the response is: Fatal error: Uncaught ValueError: fread(): Argument #2 ($length) must be greater than 0 in E:\httpd\htdocs\tools\webgrind\library\Reader.php:255 Stack trace: #0 E:\httpd\htdocs\tools\webgrind\library\Reader.php(255): fread() #1 E:\httpd\htdocs\tools\webgrind\library\Reader.php(91): Webgrind_Reader->read() #2 E:\httpd\htdocs\tools\webgrind\library\Reader.php(76): Webgrind_Reader->init() #3 E:\httpd\htdocs\tools\webgrind\library\FileHandler.php(166): Webgrind_Reader->__construct() #4 E:\httpd\htdocs\tools\webgrind\index.php(43): Webgrind_FileHandler->getTraceReader() #5 {main} thrown in E:\httpd\htdocs\tools\webgrind\library\Reader.php on line 255

SagnikGanguly96 avatar Mar 20 '22 07:03 SagnikGanguly96

Same with the current docker image:

<br />
<b>Warning</b>:  fread(): Length parameter must be greater than 0 in <b>/var/www/html/library/Reader.php</b> on line <b>247</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/html/library/Reader.php:247) in <b>/var/www/html/index.php</b> on line <b>243</b><br />
...json stuf...

ricardoboss avatar Apr 11 '22 09:04 ricardoboss

Could you provide a cachegrind file that that triggers this error?

alpha0010 avatar Apr 11 '22 13:04 alpha0010

Hi @ricardoboss, @alpha0010, I would like to inform you that I've solved the problem. I'm sorry I forgot to inform the same hereafter opening the issue.

SagnikGanguly96 avatar Apr 11 '22 14:04 SagnikGanguly96

@ricardoboss, I've manually gone through all the related files of the 'Webgrind' library to find out the exact cause and I found the error I've already mentioned in my first comment then to solve the above problem I found that actually webgrind doesn't extract the compressed XDebug profiles to parse, instead, it parses only raw XDebug profiles. So the problem could be solved by just disabling compression (in my case) which could be done using xdebug.use_compression = false. And here's my 99-xdebug.ini configured for profiling:

zend_extension = xdebug
;xdebug.mode = develop
xdebug.mode = profile
xdebug.output_dir = "E:/php/common/tmp/XDebug/Profile"
xdebug.profiler_enable = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 1
xdebug.use_compression  = false
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.show_local_vars = 1

SagnikGanguly96 avatar Apr 11 '22 14:04 SagnikGanguly96

Thanks for the update.

Compression support already in master; I forgot to tag a release for it... will do so soon.

alpha0010 avatar Apr 11 '22 19:04 alpha0010

I'm new to Webgrind and I just ran in to this issue as well. I thought I was going crazy, as you get no error it just doesn't work.

I can confirm this is fixed on master.

scottchiefbaker avatar May 14 '22 03:05 scottchiefbaker

Hi, would it be possible to release a tag with the compression support? Thank you!

csandanov avatar Feb 07 '23 11:02 csandanov

I'm running master and am still getting this error. I'll happily provide a cachegrind file. Send a message to my public email address.

danielbeardsley avatar Jun 12 '23 20:06 danielbeardsley

@danielbeardsley don't put the burden on the developers to contact you. Just attach the file here.

scottchiefbaker avatar Jun 12 '23 20:06 scottchiefbaker

Just attach the file here.

TIL you can attach arbitrary files to github comments :-) I prompted for the email cause @alpha0010 didn't have an email address on their account.

Here's one cachegrind.out.2941563.gz

From the following command:

XDEBUG_PROFILE=1 php -d "xdebug.use_compression=1" -d "xdebug.mode=profile" -d "xdebug.profile=1" -r "function test() {echo 'test';} test();"
 PHP Fatal error:  Uncaught ValueError: fread(): Argument #2 ($length) must be greater than 0 in /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/Reader.php:255
 Stack trace:
 #0 /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/Reader.php(255): fread(Resource id #594, 0)
 #1 /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/Reader.php(91): Webgrind_Reader->read(0)
 #2 /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/Reader.php(76): Webgrind_Reader->init()
 #3 /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/FileHandler.php(165): Webgrind_Reader->__construct('/tmp/cachegrind...', 'usec')
 #4 /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/index.php(43): Webgrind_FileHandler->getTraceReader('cachegrind.out....', 'usec')
 #5 {main}
   thrown in /mnt/ebs/var/www/ifixit/pub/Misc/webgrind/library/Reader.php on line 255

I get this on the most recent master.

danielbeardsley avatar Jun 12 '23 21:06 danielbeardsley

@danielbeardsley, Turn off the compression by changing the following xdebug.use_compression=1 to xdebug.use_compression=0. It should solve the issue.

SagnikGanguly96 avatar Jun 16 '23 09:06 SagnikGanguly96

Turn off the compression

Yes, I'm aware that the bug is in the support of compressed profiles and that not using compression doesn't expose the bug. The point of this issue is that compression support is not finished and seemingly still doesn't work on master.

danielbeardsley avatar Jun 16 '23 18:06 danielbeardsley