Camelcade / Perl5-IDEA

Perl5 plugins for IntelliJ IDEA
https://plugins.jetbrains.com/plugin/7796-perl/
Other
405 stars 76 forks source link

XSubs Deparsing -- Process hangs #1650

Closed nuxwin closed 5 years ago

nuxwin commented 6 years ago

@hurricup

With latest version 2017.4, XSubs deparsing doesn't longer work.

How to reproduce

  1. Remove the XSubs deparsing file manually
  2. Close the IDE
  3. Open the IDE
  4. In the Event log tag, trigger an Xsubs deparsing as recommended
  5. Go to Settings --> Language & Frameworks --> Perl5 and then on right window, click on 'Re-generate Xsub declarations' button.

Current Result The process hang. Nothing happen:

xsubs_deparsing_problem

Expected result Xsubs deparsing file should be generated.

cjelli commented 6 years ago

Same here, restarting IDEA didn't help. Which process should we see in the ps output?

hurricup commented 6 years ago

Deparsing being done using perl script: https://github.com/Camelcade/Perl5-IDEA/blob/master/perl-utils/xs_parser_simple.pl

You may take this one, or from your installation. Please, try to run it and see what happens. You may also uncomment/add some debugging info, like which module is currently loaded at line 16.

I suppose that some of your XS module prompts something.

cjelli commented 6 years ago

This script runs and completes on my machine. It issues 13 non-descript warnings: unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_arrayref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_arrayref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_arrayref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_arrayref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_hashref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667. unexpected OP_CUSTOM (is_plain_arrayref) at /usr/local/lib/perl5/5.26.1/B/Deparse.pm line 1667.

However, I found that the wrong highlighting of Test::More functions is of a different matter, not because of it is not deparsed (it's a PP module), but because my usage of test more was like: use Test::More tests => 20; If I remove tests => 20 the wrong highlighting disappears.

The wrong highlighting of MongoDB methods, though, has something to do with deparsing. The method get_collection() is defined in MongoDB::Database, but the deparsed entry for that module does not list this method.

The 'List::MoreUtils' miss of 'part' is due to 'List::MoreUtils::XS' is implicitly used through List::MoreUtils, and the function is defined in the ::XS module.

hurricup commented 6 years ago

Seems I've got the root of Test::More problem. Default exporter behavior suggests that if any params passed to use, only explicitly specified subs being imported, tests and 1 in this case. But seems Test::More works smarter.

About deparsing. It's important to understand, that deparsing makes effect only for subs defined using XS and not defined in any way in pure perl. If sub is defined in perl, problem is not about deparsing.

Could you please provide minimalistic code examples for Mongo and ListMore?

cjelli commented 6 years ago

Here are the screenshots Mongo mongo-higlight

List::MoreUtils list-moreutils-highlighting

hurricup commented 6 years ago

@cjelli about mongo: plugin can ifer types to scalar only for now. No hash elements. will check with list::more

hurricup commented 6 years ago

For exporter issues created #1657 && #1658 For hanging deparsing - still waiting reproduction.

nuxwin commented 6 years ago

@hurricup

For hanging deparsing - still waiting reproduction.

What do you mean exactly? I given the exact steps to follow to reproduce the bug. Note that I'm under Debian Jessie.

hurricup commented 6 years ago

@nuxwin have you tried to deparse with script from console as I've described above? The problem is in some of your XS modules, not deparsing script/IDE.

nuxwin commented 6 years ago

@hurricup

The problem is in some of your XS modules, not deparsing script/IDE.

Nops.. But this worked prior update... I'll run the script manually and provide you the result.

hurricup commented 6 years ago

@nuxwin I've found that with some circumstances I may reproduce such 'hanging'. Will fix, but please, check on your side anyway.

nuxwin commented 6 years ago

@hurricup

Result

nuxwin@dev:/github/i-MSCP/imscp$ perl deparse.pl 
Bizarre copy of ARRAY in scalar assignment at /usr/share/perl/5.20/File/Find.pm line 525.

Environment

nuxwin@dev:/github/i-MSCP/imscp$ perl -V
Summary of my perl5 (revision 5 version 20 subversion 2) configuration:

  Platform:
    osname=linux, osvers=4.9.0-3-amd64, archname=x86_64-linux-gnu-thread-multi
    uname='linux binet 4.9.0-3-amd64 #1 smp debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.20 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.20 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.20.2 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dusesitecustomize -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.20.2 -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.9.2', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20
    gnulibc_version='2.19'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Characteristics of this binary (from libperl): 
  Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                        PERL_DONT_CREATE_GVSV
                        PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                        PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
                        USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS
                        USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE
                        USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO
                        USE_PERL_ATOF USE_REENTRANT_API USE_SITECUSTOMIZE
  Locally applied patches:
        DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
        DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
        DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
        DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
        DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
        DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
        DEBPKG:fixes/respect_umask - Respect umask during installation
        DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
        DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib
        DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
        DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
        DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
        DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
        DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
        DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
        DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
        DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
        DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
        DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
        DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
        DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules
        DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
        DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
        DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.20.2-3+deb8u9 in patchlevel.h
        DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
        DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
        DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
        DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
        DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
        DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected
        DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories
        DEBPKG:fixes/regcomp-mips-optim - [perl #122817] http://bugs.debian.org/754054 Downgrade the optimization of regcomp.c on mips and mipsel due to a gcc-4.9 bug
        DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/758471 Pass LD settings through to subdirectories
        DEBPKG:fixes/perldoc-less-R - [rt.cpan.org #98636] http://bugs.debian.org/758689 Tell the 'less' pager to allow terminal escape sequences
        DEBPKG:fixes/pod_man_reproducible_date - http://bugs.debian.org/759405 Support POD_MAN_DATE in Pod::Man for the left-hand footer
        DEBPKG:fixes/io_uncompress_gunzip_inmemory - http://bugs.debian.org/747363 [rt.cpan.org #95494] Fix gunzip to in-memory file handle
        DEBPKG:fixes/socket_test_recv_fix - http://bugs.debian.org/758718 [perl #122657] Compare recv return value to peername in socket test
        DEBPKG:fixes/hurd_socket_recv_todo - http://bugs.debian.org/758718 [perl #122657] TODO checking the result of recv() on hurd
        DEBPKG:fixes/regexp-performance - [0fa70a0] http://bugs.debian.org/777556 [perl #123743] simpify and speed up /.*.../ handling
        DEBPKG:fixes/failed_require_diagnostics - http://bugs.debian.org/781120 [perl #123270] Report inaccesible file on failed require
        DEBPKG:fixes/array-cloning - http://bugs.debian.org/779357 [perl #124127] [902d169] fix cloning arrays with unused elements
        DEBPKG:fixes/perldb-threads - http://bugs.debian.org/779357 [perl #124127] [41ef2c6] lib/perl5db.pl: Restore noop lock prototype
        DEBPKG:fixes/CVE-2015-8607_file_spec_taint_fix - ensure File::Spec::canonpath() preserves taint
        DEBPKG:fixes/encode-unicode-bom - http://bugs.debian.org/798727 [rt.cpan.org #107043] Address https://rt.cpan.org/Public/Bug/Display.html?id=107043
        DEBPKG:debian/encode-unicode-bom-doc - http://bugs.debian.org/798727 Document Debian backport of Encode::Unicode fix
        DEBPKG:debian/kfreebsd-softupdates - http://bugs.debian.org/796798 Work around Debian Bug#796798
        DEBPKG:fixes/CVE-2016-2381_duplicate_env - remove duplicate environment variables from environ
        DEBPKG:debian/debugperl-compat-fix - [perl #127212] http://bugs.debian.org/810326 Disable PERL_TRACK_MEMPOOL for debugging builds
        DEBPKG:fixes/CVE-2015-8853_regexp_hang - http://bugs.debian.org/821848 [perl #123562] PATCH [perl #123562] Regexp-matching "hangs"
        DEBPKG:fixes/utf8_regexp_crash - http://bugs.debian.org/820328 [perl #124109] save_re_context(): do "local $n" with no PL_curpm
        DEBPKG:fixes/regcomp_whitespace_fix - http://bugs.debian.org/820328 [perl #124109] Perl_save_re_context(): re-indent after last commit
        DEBPKG:fixes/5.20.3/eval_label_crash - http://bugs.debian.org/822336 [perl #123652] eval {label:} crash
        DEBPKG:fixes/5.20.3/preserve_record_separator - http://bugs.debian.org/822336 [perl #123218] "preserve" $/ if set to a bad value
        DEBPKG:fixes/5.20.3/test_count_base_rs - http://bugs.debian.org/822336 Fix test count in t/base/rs.t
        DEBPKG:fixes/5.20.3/remove_get_magic - http://bugs.debian.org/822336 [perl #123739] Remove get-magic from $/
        DEBPKG:fixes/5.20.3/speed_up_scalar_g - http://bugs.debian.org/822336 [perl #123202] speed up scalar //g against tainted strings
        DEBPKG:fixes/5.20.3/accidental_all_features - http://bugs.debian.org/822336 Stop $^H |= 0x1c020000 from enabling all features
        DEBPKG:fixes/5.20.3/multidimensional_arrays_utf8 - http://bugs.debian.org/822336 [perl #124113] Make check for multi-dimensional arrays be UTF8-aware
        DEBPKG:fixes/5.20.3/unquoted_utf8_heredoc_terminators - http://bugs.debian.org/822336 Allow unquoted UTF-8 HERE-document terminators
        DEBPKG:fixes/5.20.3/parentheses_ambiguous_warning_utf8_functions - http://bugs.debian.org/822336 Fix "...without parentheses is ambuguous" warning for UTF-8 function names
        DEBPKG:fixes/5.20.3/leak_namepv_copy - http://bugs.debian.org/822336 [perl #123786] don't leak the temp utf8 copy of namepv
        DEBPKG:fixes/5.20.3/h2ph_hex_constants - http://bugs.debian.org/822336 h2ph: correct handling of hex constants for the preamble
        DEBPKG:fixes/5.20.3/leftbracket_XTERMORDORDOR - http://bugs.debian.org/822336 [perl #123711] Fix crash with 0-5x-l{0}
        DEBPKG:fixes/5.20.3/fatalize_warnings_unwinding - http://bugs.debian.org/822336 [perl #123398] don't fatalize warnings during unwinding (#123398)
        DEBPKG:fixes/5.20.3/setpgrp - http://bugs.debian.org/822336 =?UTF-8?q?Don=E2=80=99t=20treat=20setpgrp($nonzero)=20as=20setpgr?= =?UTF-8?q?p(1)?=
        DEBPKG:fixes/5.20.3/death_unwinding_crash - http://bugs.debian.org/822336 [perl #124156] RT #124156: death during unwinding causes crash
        DEBPKG:fixes/5.20.3/stashpvn_crash - http://bugs.debian.org/822336 [perl #125541] Fix crash with %::=(); J->${\"::"}
        DEBPKG:fixes/5.20.3/possessive_quantifier - http://bugs.debian.org/822336 [perl #125825] PATCH: [perl 125825] {n}+ possessive quantifier broken
        DEBPKG:fixes/5.20.3/quoted_code_crash - http://bugs.debian.org/822336 [perl #123712] Fix /$a[/ parsing
        DEBPKG:fixes/5.20.3/checking_sub_inwhat - http://bugs.debian.org/822336 [perl #123712] Don't check sub_inwhat
        DEBPKG:fixes/5.20.3/yylex_loop - http://bugs.debian.org/822336 Fix hang with "@{"
        DEBPKG:fixes/5.20.3/docs/op - http://bugs.debian.org/822336 Fix apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,.
        DEBPKG:fixes/5.20.3/docs/encoding - http://bugs.debian.org/822336 perlpodspec: Corrections/adds to detecting =encoding
        DEBPKG:fixes/5.20.3/docs/SvPV_set - http://bugs.debian.org/822336 improve SvPV_set's docs, it really shouldn't be public API
        DEBPKG:fixes/5.20.3/docs/autodie - http://bugs.debian.org/822336 Fix warning message regarding "use autodie" and "use open".
        DEBPKG:fixes/5.20.3/docs/autodie_2_26 - http://bugs.debian.org/822336 perlunicook: Note that autodie >= 2.26 should be okay with "use open".
        DEBPKG:fixes/5.20.3/docs/setenv - http://bugs.debian.org/822336 Fix setenv() replacement documentation in perlclib
        DEBPKG:fixes/5.20.3/docs/clib_caution - http://bugs.debian.org/822336 perlhacktips: Add caution about clib ptr returns to static memory
        DEBPKG:fixes/5.20.3/docs/perlunicook_typos - http://bugs.debian.org/822336 Fix minor code typos in perlunicook
        DEBPKG:fixes/5.20.3/docs/ook_example - http://bugs.debian.org/822336 [perl #122322] Update OOK example in perlguts
        DEBPKG:fixes/5.20.3/docs/study_noop - http://bugs.debian.org/822336 perlfunc: mention that study() is currently a noop
        DEBPKG:fixes/CVE-2016-1238/remove-dot-when-loading - [perl #127834] (perl #127834) remove . from the end of @INC if complex modules are loaded
        DEBPKG:fixes/CVE-2016-1238/remove-dot-in-padwalker - [perl #127834] perl5db.pl: ensure PadWalker is loaded from standard paths
        DEBPKG:fixes/CVE-2016-1238/remove-dot-in-dist - [perl #127834] dist/: remove . from @INC when loading optional modules
        DEBPKG:fixes/CVE-2016-1238/remove-dot-in-cpan - [perl #127834] cpan/: remove . from @INC when loading optional modules
        DEBPKG:fixes/CVE-2016-1238/customized-encode - Update customized.dat for cpan/Encode/Encode.pm
        DEBPKG:debian/CVE-2016-1238/test-suite-without-dot - [perl #127810] Patch unit tests to explicitly insert "." into @INC when needed.
        DEBPKG:debian/CVE-2016-1238/eumm-without-dot - [perl #127810] Add PERL_USE_UNSAFE_INC support to EU::MM for fortify_inc support.
        DEBPKG:debian/CVE-2016-1238/cpan-without-dot - [perl #127810] Set PERL_USE_UNSAFE_INC for cpan usage
        DEBPKG:debian/CVE-2016-1238/mb-without-dot - Make Module::Build set PERL_USE_UNSAFE_INC
        DEBPKG:debian/CVE-2016-1238/sitecustomize-in-etc - Look for sitecustomize.pl in /etc/perl rather than sitelib on Debian systems
        DEBPKG:fixes/xsloader-eval - [rt.cpan.org #115808] http://bugs.debian.org/829578 =?UTF-8?q?Don=E2=80=99t=20let=20XSLoader=20load=20relative=20path?= =?UTF-8?q?s?=
        DEBPKG:fixes/file_path_chmod_race - http://bugs.debian.org/863870 [rt.cpan.org #121951] Prevent directory chmod race attack.
        DEBPKG:fixes/extutils_file_path_compat - [PATCH] Correct the order of tests of chmod(). (#294)
        DEBPKG:debian/customized_file_path - Update customized.dat for File-Path changes
        DEBPKG:debian/CVE-2016-1238/base-pm-amends-pt1 - Revert base.pm no-dot-in-inc fixes to make way for a better version
        DEBPKG:debian/CVE-2016-1238/base-pm-amends-pt2 - [1afa289] Limit dotless-INC effect on base.pm with guard:
        DEBPKG:fixes/CVE-2017-12837 - http://bugs.debian.org/875596 [perl #131582] regcomp [perl #131582]
        DEBPKG:fixes/CVE-2017-12883 - http://bugs.debian.org/875597 [perl #131598] PATCH: [perl #131598]
        DEBPKG:fixes/CVE-2017-12883-5.20 - http://bugs.debian.org/875597 [perl #131598] regcomp: Fix out of bound reads
  Built under linux
  Compiled at Sep 18 2017 18:16:33
  @INC:
    /etc/perl
    /usr/local/lib/x86_64-linux-gnu/perl/5.20.2
    /usr/local/share/perl/5.20.2
    /usr/lib/x86_64-linux-gnu/perl5/5.20
    /usr/share/perl5
    /usr/lib/x86_64-linux-gnu/perl/5.20
    /usr/share/perl/5.20
    /usr/local/lib/site_perl
    .
nuxwin@dev:/github/i-MSCP/imscp$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.9 (jessie)
Release:        8.9
Codename:       jessie
hurricup commented 6 years ago

@nuxwin ye, seems like problem on perl side :) Try to add Carp::Always to deparsing script, may be you'll find something. Anyway, this is something set up sepcific. This will take time, have no Debian as far as i remember.

nuxwin commented 6 years ago

@hurricup

Try to add Carp::Always to deparsing script, may be you'll find something.

Result with use Carp::Always; added to the script:

nuxwin@dev:/github/i-MSCP/imscp$ perl deparse.pl 
Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.20/Carp.pm line 228.
nuxwin commented 6 years ago

@hurricup

More info

nuxwin@dev:/github/i-MSCP/imscp$ perl deparse.pl 
Processing DBD::SQLite
Processing Proc::ProcessTable
Processing Image::Magick
Processing Image::Magick::Q16
Processing List::MoreUtils
Processing DateTime
Processing URI::Escape::XS
Processing Package::Stash::XS
Processing UUID
Processing FCGI
Processing Net::DBus
Processing Net::SSLeay
Processing Net::LibIDN
Processing Net::DNS
Processing Lchown
Processing OSSP::uuid
Processing File::FcntlLock
Processing AptPkg
Processing Text::CharWidth
Processing Text::Soundex
Processing Text::Iconv
Processing Pango
Processing Gtk2
Processing Glib
Processing DBI
Processing Locale::gettext
Processing Crypt::SSLeay
Processing Crypt::Rijndael
Processing Sub::Name
Processing Sub::Identify
Processing Socket6
Processing XML::LibXML
Processing XML::Parser::Expat
Processing Class::C3::XS
Processing Cairo
Processing Params::Classify
Processing Params::Util
Processing Params::Validate::XS
Processing IO::Tty
Processing Variable::Magic
Processing HTML::Parser
Processing PerlIO::gzip
Processing Clone
Processing JSON::XS
Processing Algorithm::Diff::XS
Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.20/Carp.pm line 228.

So the seem to be Algorithm::Diff::XS

hurricup commented 6 years ago

@nuxwin There is a return for Type::Tiny::XS, add another one for this one and try.

nuxwin commented 6 years ago

@hurricup

There is a return for Type::Tiny::XS, add another one for this one and try.

Exactly what I'm doing now.

nuxwin commented 6 years ago

@hurricup

And now, I get the same thing for the JSON::XS. It seem that there is something weird with processing of XS modules.

...
my @packages = ();
sub file_processor
{
    if ($File::Find::name =~ m{auto/(.+?)/([^/]+)(dll|so)$})
    {
        my $name = $1;
        $name =~ s{/+}{::}g;
        return if $name =~ /\QType::Tiny::XS\E/; # see https://github.com/tobyink/p5-type-tiny-xs/issues/4
        return if $name =~ /\QAlgorithm::Diff::XS\E/;
        print "Processing $name\n";
        eval "require $name;";
        if (my $e = $@)
        {
            print STDERR "Error loading $name:\n$e\n";
        }
    }
}
...
nuxwin@dev:/github/i-MSCP/imscp$ perl deparse.pl 
Processing DBD::SQLite
Processing Proc::ProcessTable
Processing Image::Magick
Processing Image::Magick::Q16
Processing List::MoreUtils
Processing DateTime
Processing URI::Escape::XS
Processing Package::Stash::XS
Processing UUID
Processing FCGI
Processing Net::DBus
Processing Net::SSLeay
Processing Net::LibIDN
Processing Net::DNS
Processing Lchown
Processing OSSP::uuid
Processing File::FcntlLock
Processing AptPkg
Processing Text::CharWidth
Processing Text::Soundex
Processing Text::Iconv
Processing Pango
Processing Gtk2
Processing Glib
Processing DBI
Processing Locale::gettext
Processing Crypt::SSLeay
Processing Crypt::Rijndael
Processing Sub::Name
Processing Sub::Identify
Processing Socket6
Processing XML::LibXML
Processing XML::Parser::Expat
Processing Class::C3::XS
Processing Cairo
Processing Params::Classify
Processing Params::Util
Processing Params::Validate::XS
Processing IO::Tty
Processing Variable::Magic
Processing HTML::Parser
Processing PerlIO::gzip
Processing Clone
Processing JSON::XS
Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.20/Carp.pm line 228.
hurricup commented 6 years ago

Ye, something bad happens on the way. Need to think what to do here.

nuxwin commented 6 years ago

@hurricup

I'll run the same script on Debian stretch (Perl version is more recent).

hurricup commented 6 years ago

Okay, IDE should now report errors properly and should not act like process hangs.

nuxwin commented 6 years ago

@hurricup

Under Debian Stretch, the problem doesn't appear.

root@stretch:~# perl -v

This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi
(with 75 registered patches, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

root@stretch:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.2 (stretch)
Release:    9.2
Codename:   stretch
root@stretch:~#
hurricup commented 6 years ago

Would be nice if you could update plugin from github and confirm that with your old version of perl plugin now more helpful than before.

nuxwin commented 6 years ago

@hurricup

Would be nice if you could update plugin from github and confirm that with your old version of perl plugin now more helpful than before.

I'll provide you with the result soon.

nuxwin commented 6 years ago

@hurricup

First, for the build: BUILD SUCCESSFUL

Now for the issue we are interested in, I now get the following error in Event log window:

05/12/17
21:03   XSubs Change Detected
            XSubs declarations file is absent or outdated.
            Regenerate

21:03   Deparser Execution Error
            Bizarre copy of ARRAY in scalar assignment at /usr/share/perl/5.20/File/Find.pm line 525.

So yes, the process doesn't longer hang. A retry lead to the same error message.

hurricup commented 6 years ago

Cool. Thank you!

nuxwin commented 6 years ago

@hurricup

Cool. Thank you!

You're welcome. I hope that you'll be able to reproduce and fix the problem for Perl 5.20... I need now update my workstation to Debian Stretch (Big work in perspective)....

morehockeystats commented 5 years ago

It's happening again after I upgraded the interpreter to 5.28.2 via compilation from source:

Processing Date::Calc::XS Bizarre copy of CODE in scalar assignment at /usr/local/lib/perl5/5.28.2/File/Find.pm line 183. File::Find::_find_opt(HASH(0x5635fbe66758), "Bizarre copy of CODE in scalar assignment at /usr/local/lib/p"..., " argument not available anymore ", "Data::OptList::", " argument not available anymore ", "Devel::LexAlias::lexalias") called at /usr/local/lib/perl5/5.28.2/File/Find.pm line 760 File::Find::find(CODE(0x5635fc283a60), "Bizarre copy of CODE in scalar assignment at /usr/local/lib/p"..., " argument not available anymore ", "Data::OptList::", " argument not available anymore ", "Devel::LexAlias::lexalias") called at /home/romm/.IntelliJIdea2019.1/config/plugins/perl5.core/perl/xs_parser_simple.pl line 5

hurricup commented 5 years ago

@morehockeystats could you please try to run same command line from your terminal? Command line may be found in logs. If it hangs from the terminal, this would be a pretty different story and most likely should be reported to some module author (B::Deparse for example). You can see by yourself, deparsing script is pretty simple.

morehockeystats commented 5 years ago

This is a run from the terminal. It doesn't hang, it just crashes out as soon as it starts processing Date::Calc::XS

perl -MCarp::Always /home/romm/.IntelliJIdea2019.1/config/plugins/perl5.core/perl/xs_parser_simple.pl Processing Devel::LexAlias Processing Devel::Caller Processing PadWalker Processing PerlIO::utf8_strict Processing Test::LeakTrace Processing Regexp::Util Processing Cpanel::JSON::XS Processing List::MoreUtils::XS Processing Moose Processing Bit::Vector Processing B::Hooks::OP::Check Processing Term::ReadKey Processing Cwd Processing Hash::FieldHash Processing Ref::Util::XS Processing Data::Dumper Processing HTML::Parser Processing BSON::XS Processing Class::Load::XS Processing Class::XSAccessor Processing Time::Moment Processing Time::HiRes Processing Params::Util Processing DBI Processing DBD::mysql Processing indirect Processing Digest::SHA Processing Encode Processing Encode::EBCDIC Processing Encode::JP Processing Encode::Byte Processing Encode::CN Processing Encode::TW Processing Encode::KR Processing Encode::Unicode Processing Encode::Symbol Processing Proc::ProcessTable Processing Package::Stash::XS Processing Text::CSV_XS Processing Net::SSLeay Processing Storable Processing multidimensional Processing JSON::XS Processing Sub::Identify Processing Sub::Name Processing Unicode::UTF8 Processing Unicode::LineBreak Processing Image::Magick::Q16HDRI Processing bareword::filehandles Processing XML::LibXML Processing MooseX::Role::WithOverloading Processing Compress::Raw::Bzip2 Processing Compress::Raw::Zlib Processing WWW::Form::UrlEncoded::XS Processing Variable::Magic Processing Date::Calc::XS Bizarre copy of CODE in scalar assignment at /usr/local/lib/perl5/5.28.2/File/Find.pm line 183. File::Find::_find_opt(HASH(0x56358ecd4758), "Bizarre copy of CODE in scalar assignment at /usr/local/lib/p"..., " argument not available anymore ", "Data::OptList::", " argument not available anymore ", undef) called at /usr/local/lib/perl5/5.28.2/File/Find.pm line 760 File::Find::find(CODE(0x56358f0f1420), "Bizarre copy of CODE in scalar assignment at /usr/local/lib/p"..., " argument not available anymore ", "Data::OptList::", " argument not available anymore ", undef) called at /home/romm/.IntelliJIdea2019.1/config/plugins/perl5.core/perl/xs_parser_simple.pl line 5

hurricup commented 5 years ago

I'll check it, thanks

morehockeystats commented 5 years ago

The issue seems to have disappeared after upgrade to IDEA-IU-2019.2 and the latest plugin version.

hurricup commented 5 years ago

Ok, I'm closing it. Will re-open if happen again.

djstauffer commented 4 years ago

I am having this problem also. In my case, when I run the script manually I get this message:

GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed at /usr/lib/x86_64-linux-gnu/perl/5.28/DynaLoader.pm line 204. DynaLoader::bootstrap("Gtk2", 1.24992) called at /usr/lib/x86_64-linux-gnu/perl5/5.28/Gtk2.pm line 94

and the script just hangs there forever (I have waited for hours recently, and it never terminates).

I am on debian buster. As a test I removed the libgtk2-perl package (which is what installs the /usr/lib/x86_64-linux-gnu/perl5/5.28/Gtk2.pm module). Once that package was uninstalled the xs_parser_simple.pl script ran to completion.

So, obviously there are some modules for which this is a problem.

I am running the latest version of Jetbrains IDEA (2020.2) and the latest version of the Perl plugin (2020.2.1).

hurricup commented 4 years ago

@djstauffer this looks to me like a perl deparser bug. IDE should probably provide you with a way to terminate process

hurricup commented 4 years ago

And probably running it in a console could be more useful

djstauffer commented 4 years ago

I agree that the IDE should permit you to terminate it. Also it would be nice if you could see what it was complaining about (the deparse script), rather than just have it hang with no feedback. That's why I ran it in the console so I could see what the problem was.

Another semi-related issue (for me) is that running the script to regenerate from within the IDE fails when I have a project directory mounted using sshfs. The script itself actually succeeds, but I get this error:

"Error Creating XSubs Result File: Failed to change read-only flag for {project-path}/_Deparsed_XSubs.pm" (where {project-path} is the literal path to my project). This is happening because on the sshfs mount, the Java code in plugin/core/src/com/perl5/lang/perl/xsubs/PerlXSubsState.java (around line 283) is failing to set the read-only flag once it is done. Would be nice if it would not abort due to that. It could still mark the XSubs as current and do the "FileContentUtilCore.reparseFiles(newFile);" line, etc even though the set-readonly failed. As it is, I can not get the XSubs "updated" on this project because of that.