Opened 2 years ago

Closed 2 years ago

Last modified 18 months ago

#64028 closed defect (fixed)

Error: process_cmd failed: invalid command name "::registry::entry976"

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by:
Priority: Normal Milestone:
Component: base Version: 2.7.99
Keywords: Cc: mascguy (Christopher Nielsen)
Port:

Description

When upgrading outdated ports after upgrading from High Sierra to Catalina (without performing the complete uninstall and reinstall dance of wiki:Migration), I am seeing errors like this:

$ sudo port -ub upgr outdated and rdepof:objectmarker
--->  Computing dependencies for findutils
--->  Fetching archive for findutils
--->  Attempting to fetch findutils-4.7.0_0.darwin_19.x86_64.tbz2 from http://packages.internal.macports.net/findutils
--->  Attempting to fetch findutils-4.7.0_0.darwin_19.x86_64.tbz2.rmd160 from http://packages.internal.macports.net/findutils
--->  Installing findutils @4.7.0_0
--->  Cleaning findutils
--->  Computing dependencies for findutils
--->  Deactivating findutils @4.7.0_0+universal
--->  Cleaning findutils
--->  Activating findutils @4.7.0_0
--->  Cleaning findutils
--->  Uninstalling findutils @4.7.0_0+universal
--->  Cleaning findutils
--->  Fetching archive for fop
--->  Attempting to fetch fop-1.1_1.darwin_19.noarch.tbz2 from http://packages.internal.macports.net/fop
--->  Attempting to fetch fop-1.1_1.darwin_19.noarch.tbz2.rmd160 from http://packages.internal.macports.net/fop
--->  Unable to uninstall fop @1.1_1, the following ports depend on it:
--->  	xmlto @0.0.28_4
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating fop @1.1_1
--->  Cleaning fop
--->  Uninstalling fop @1.1_1
--->  Cleaning fop
--->  Installing fop @1.1_1
--->  Activating fop @1.1_1
--->  Cleaning fop
Error: process_cmd failed: invalid command name "::registry::entry976"
$ sudo port -ub upgr outdated and rdepof:objectmarker
...
--->  Fetching archive for opencv3
--->  Attempting to fetch opencv3-3.4.16_0.darwin_19.x86_64.tbz2 from http://packages.internal.macports.net/opencv3
--->  Attempting to fetch opencv3-3.4.16_0.darwin_19.x86_64.tbz2.rmd160 from http://packages.internal.macports.net/opencv3
--->  Computing dependencies for opencv3
--->  Deactivating opencv3 @3.4.16_0
--->  Cleaning opencv3
--->  Uninstalling opencv3 @3.4.16_0
--->  Cleaning opencv3
--->  Computing dependencies for opencv3
--->  Installing opencv3 @3.4.16_0
--->  Activating opencv3 @3.4.16_0
--->  Cleaning opencv3
Error: process_cmd failed: invalid command name "::registry::entry1442"

This seems to happen only for those ports whose version, revision and variants exactly matched the previously installed one. It didn't happen, for example, for findutils, which had been installed with universal before but not now (since universal isn't possible on Catalina).

Change History (9)

comment:1 Changed 2 years ago by jmroot (Joshua Root)

In 85fd4d52b878a1ebc3f85649ebc894a65bbaf97d/macports-base (master):

Don't close registry ref in portinstall

The way we use the registry, this just isn't safe without ref counting.

See: #64028

comment:2 Changed 2 years ago by jmroot (Joshua Root)

Try with that.

comment:3 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:4 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Thanks for looking into it! But that doesn't appear to have fixed it:

$ sudo port -ub upgr yt-dlp yelp yaz xxhash
--->  Fetching archive for yt-dlp
--->  Attempting to fetch yt-dlp-2021.11.10.1_0+ffmpeg+python39.darwin_19.noarch.tbz2 from http://packages.internal.macports.net/yt-dlp
--->  Attempting to fetch yt-dlp-2021.11.10.1_0+ffmpeg+python39.darwin_19.noarch.tbz2.rmd160 from http://packages.internal.macports.net/yt-dlp
--->  Computing dependencies for yt-dlp
--->  Deactivating yt-dlp @2021.11.10.1_0+ffmpeg+python39
--->  Cleaning yt-dlp
--->  Uninstalling yt-dlp @2021.11.10.1_0+ffmpeg+python39
--->  Cleaning yt-dlp
--->  Computing dependencies for yt-dlp
--->  Installing yt-dlp @2021.11.10.1_0+ffmpeg+python39
--->  Activating yt-dlp @2021.11.10.1_0+ffmpeg+python39
--->  Cleaning yt-dlp
Error: process_cmd failed: invalid command name "::registry::entry0"
--->  Fetching archive for qt5-qtsvg
--->  Attempting to fetch qt5-qtsvg-5.15.2_0.darwin_19.x86_64.tbz2 from http://packages.internal.macports.net/qt5-qtsvg
--->  Attempting to fetch qt5-qtsvg-5.15.2_0.darwin_19.x86_64.tbz2.rmd160 from http://packages.internal.macports.net/qt5-qtsvg
--->  Computing dependencies for qt5-qtsvg
--->  Unable to uninstall qt5-qtsvg @5.15.2_0, the following ports depend on it:
--->  	libqtxdg @3.5.0_0
--->  	py38-pyside2 @5.15.0_0
--->  	qt5-qtdeclarative @5.15.2_0
--->  	mlt @6.24.0_0+qt5
--->  	wireshark3 @3.4.9_0+cares+chmodbpf+geoip+gnutls+kerberos5+libsmi+python39+qt5+zlib
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating qt5-qtsvg @5.15.2_0
--->  Cleaning qt5-qtsvg
--->  Uninstalling qt5-qtsvg @5.15.2_0
--->  Cleaning qt5-qtsvg
--->  Computing dependencies for qt5-qtsvg
--->  Installing qt5-qtsvg @5.15.2_0
--->  Activating qt5-qtsvg @5.15.2_0
--->  Cleaning qt5-qtsvg
Error: process_cmd failed: invalid command name "::registry::entry218"

comment:5 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Perhaps some output from debug mode helps narrow this down:

$ sudo port -ubd upgr yelp
...
--->  Cleaning qt5-qtdeclarative
DEBUG: Executing org.macports.clean (qt5-qtdeclarative)
--->  Removing work directory for qt5-qtdeclarative
DEBUG: Removing directory: /opt/local/var/macports/build/_Users_rschmidt_macports_macports-ports-ryandesign-fork_aqua_qt5/qt5-qtdeclarative
DEBUG: Removing symlink: /Users/rschmidt/macports/macports-ports-ryandesign-fork/aqua/qt5/work
DEBUG: Removing directory: /opt/local/var/macports/logs/_Users_rschmidt_macports_macports-ports-ryandesign-fork_aqua_qt5/qt5-qtdeclarative
DEBUG: process_cmd failed: invalid command name "::registry::entry207"
    while executing
"$i version"
    (procedure "macports::_upgrade" line 535)
    invoked from within
"macports::_upgrade $d $dspec $variationslist [array get options] depscache"
    (procedure "_upgrade_dependencies" line 37)
    invoked from within
"_upgrade_dependencies portinfo depscache variationslist options [expr {$will_build && $already_installed}]"
    (procedure "macports::_upgrade" line 353)
    invoked from within
"macports::_upgrade $d $dspec $variationslist [array get options] depscache"
    (procedure "_upgrade_dependencies" line 37)
    invoked from within
"_upgrade_dependencies portinfo depscache variationslist options [expr {$will_build && $already_installed}]"
    (procedure "macports::_upgrade" line 353)
    invoked from within
"macports::_upgrade $d $dspec $variationslist [array get options] depscache"
    (procedure "_upgrade_dependencies" line 37)
    invoked from within
"_upgrade_dependencies portinfo depscache variationslist options [expr {$will_build && $already_installed}]"
    (procedure "macports::_upgrade" line 353)
    invoked from within
"macports::_upgrade $portname $dspec $variationslist $optionslist depscache"
    (procedure "macports::upgrade" line 24)
    invoked from within
"macports::upgrade $portname "port:$portname" [array get requested_variations] [array get options] depscache"
    ("uplevel" body line 3)
    invoked from within
"uplevel 1 $block"
    (procedure "foreachport" line 24)
    invoked from within
"foreachport $portlist {
        if {![info exists depscache(port:$portname)]} {
            set status [macports::upgrade $portname "port:$portname" [..."
    (procedure "action_upgrade" line 9)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 110)
    invoked from within
"process_cmd $remaining_args"
    ("uplevel" body line 3)
    invoked from within
"uplevel 1 $body"
Error: process_cmd failed: invalid command name "::registry::entry207"

comment:6 Changed 2 years ago by jmroot (Joshua Root)

In 563474fa34c7006117d761ea41025b604e847bb8/macports-base (master):

Don't reuse possibly invalidated regrefs in upgrade

See: #64028

comment:7 Changed 2 years ago by jmroot (Joshua Root)

Try now, I think this was specific to using -u.

comment:8 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

Milestone: MacPorts Future
Resolution: fixed
Status: newclosed

I think this works! Thanks so much. I would never have found that.

comment:9 Changed 18 months ago by jmroot (Joshua Root)

Milestone: MacPorts Future
Note: See TracTickets for help on using tickets.