public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "ilja.j.honkonen at nasa dot gov" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/61836] New: Incorrect template argument deduction/substitution failure? Date: Thu, 17 Jul 2014 20:15:00 -0000 [thread overview] Message-ID: <bug-61836-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61836 Bug ID: 61836 Summary: Incorrect template argument deduction/substitution failure? Product: gcc Version: 4.9.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ilja.j.honkonen at nasa dot gov Created attachment 33137 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33137&action=edit Preprocessed source Trying to enable_if a particular implementation of a class member function based on its template argument: template< class Out_T > typename std::enable_if< std::is_same<Out_T, bool>::value, Out_T >::type get_parsed_value(...) template< class Out_T > typename std::enable_if< std::is_same<Out_T, double>::value, Out_T >::type get_parsed_value(...) including std::array and Eigen::Matrix: template<class T> struct is_std_array_double : std::false_type {}; template<size_t N> struct is_std_array_double< std::array<double, N> > : std::true_type {}; template<class T> struct is_eigen_vector_double : std::false_type {}; template<size_t N> struct is_eigen_vector_double< Eigen::Matrix<double, N, 1> > : std::true_type {}; template< class Out_T > typename std::enable_if< detail::is_std_array_double<Out_T>::value, Out_T >::type get_parsed_value(...) template< class Out_T > typename std::enable_if< detail::is_eigen_vector_double<Out_T>::value, Out_T >::type get_parsed_value(...) fails because apparently is_eigen_vector_double returns false for Eigen::Matrix<double, N, 1> even though it shouldn't. The same code compiles with clangs 3.3-5. Compile command: /opt/local/gcc-4.9.1/bin/g++ -I source -std=c++11 -W -Wall -Wextra -pedantic -O3 -I /opt/local/include/eigen3 -I /opt/local/include -L /opt/local/lib -lboost_coroutine-mt -lboost_system-mt -lboost_random-mt -lboost_program_options-mt -I /Users/iljah/include -L /Users/iljah/lib -lmuparserx -I /Users/iljah/include tests/program_options/variable_to_option.cpp -o tests/program_options/variable_to_option.exe -Wno-unused-local-typedefs -save-temps -v Output: Using built-in specs. COLLECT_GCC=/opt/local/gcc-4.9.1/bin/g++ COLLECT_LTO_WRAPPER=/opt/local/gcc-4.9.1/libexec/gcc/x86_64-apple-darwin13.3.0/4.9.1/lto-wrapper Target: x86_64-apple-darwin13.3.0 Configured with: ../gcc-4.9.1/configure --prefix=/opt/local/gcc-4.9.1 --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-languages=c,c++ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --disable-bootstrap Thread model: posix gcc version 4.9.1 (GCC) COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.9.3' '-I' 'source' '-std=c++11' '-Wall' '-Wextra' '-Wpedantic' '-O3' '-I' '/opt/local/include/eigen3' '-I' '/opt/local/include' '-L/opt/local/lib' '-I' '/Users/iljah/include' '-L/Users/iljah/lib' '-I' '/Users/iljah/include' '-o' 'tests/program_options/variable_to_option.exe' '-Wno-unused-local-typedefs' '-save-temps' '-v' '-shared-libgcc' '-mtune=core2' /opt/local/gcc-4.9.1/libexec/gcc/x86_64-apple-darwin13.3.0/4.9.1/cc1plus -E -quiet -v -I source -I /opt/local/include/eigen3 -I /opt/local/include -I /Users/iljah/include -I /Users/iljah/include -D__DYNAMIC__ tests/program_options/variable_to_option.cpp -fPIC -mmacosx-version-min=10.9.3 -mtune=core2 -std=c++11 -Wall -Wextra -Wpedantic -Wno-unused-local-typedefs -O3 -fpch-preprocess -o variable_to_option.ii ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/../../../../x86_64-apple-darwin13.3.0/include" ignoring duplicate directory "/Users/iljah/include" #include "..." search starts here: #include <...> search starts here: source /opt/local/include/eigen3 /opt/local/include /Users/iljah/include /opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/../../../../include/c++/4.9.1 /opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/../../../../include/c++/4.9.1/x86_64-apple-darwin13.3.0 /opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/../../../../include/c++/4.9.1/backward /opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/include /opt/local/gcc-4.9.1/include /opt/local/gcc-4.9.1/lib/gcc/x86_64-apple-darwin13.3.0/4.9.1/include-fixed /usr/include /System/Library/Frameworks /Library/Frameworks End of search list. COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.9.3' '-I' 'source' '-std=c++11' '-Wall' '-Wextra' '-Wpedantic' '-O3' '-I' '/opt/local/include/eigen3' '-I' '/opt/local/include' '-L/opt/local/lib' '-I' '/Users/iljah/include' '-L/Users/iljah/lib' '-I' '/Users/iljah/include' '-o' 'tests/program_options/variable_to_option.exe' '-Wno-unused-local-typedefs' '-save-temps' '-v' '-shared-libgcc' '-mtune=core2' /opt/local/gcc-4.9.1/libexec/gcc/x86_64-apple-darwin13.3.0/4.9.1/cc1plus -fpreprocessed variable_to_option.ii -fPIC -quiet -dumpbase variable_to_option.cpp -mmacosx-version-min=10.9.3 -mtune=core2 -auxbase variable_to_option -O3 -Wall -Wextra -Wpedantic -Wno-unused-local-typedefs -std=c++11 -version -o variable_to_option.s GNU C++ (GCC) version 4.9.1 (x86_64-apple-darwin13.3.0) compiled by GNU C version 4.8.2, GMP version 6.0.0, MPFR version 3.1.1-p2, MPC version 1.0.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C++ (GCC) version 4.9.1 (x86_64-apple-darwin13.3.0) compiled by GNU C version 4.8.2, GMP version 6.0.0, MPFR version 3.1.1-p2, MPC version 1.0.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: bd2008a6eb882424f30fe6b02f71d084 In file included from tests/program_options/variable_to_option.cpp:41:0: source/boundaries/variable_to_option.hpp: In instantiation of ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:366:13: error: no matching function for call to ‘pamhd::boundaries::Variable_To_Option<Momentum_Density>::get_parsed_value(const std::array<double, 3ul>&)’ >(position); ^ source/boundaries/variable_to_option.hpp:366:13: note: candidates are: source/boundaries/variable_to_option.hpp:408:10: note: template<class Out_T> typename std::enable_if<std::is_same<Out_T, bool>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Out_T; Last_Variable = Momentum_Density] >::type get_parsed_value(const std::array<double, 3>& position) ^ source/boundaries/variable_to_option.hpp:408:10: note: template argument deduction/substitution failed: source/boundaries/variable_to_option.hpp: In substitution of ‘template<class Out_T> typename std::enable_if<std::is_same<Out_T, bool>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:366:13: required from ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’ tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:408:10: error: no type named ‘type’ in ‘struct std::enable_if<false, Eigen::Matrix<double, 3, 1> >’ source/boundaries/variable_to_option.hpp: In instantiation of ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:430:10: note: template<class Out_T> typename std::enable_if<std::is_same<Out_T, int>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Out_T; Last_Variable = Momentum_Density] >::type get_parsed_value(const std::array<double, 3>& position) ^ source/boundaries/variable_to_option.hpp:430:10: note: template argument deduction/substitution failed: source/boundaries/variable_to_option.hpp: In substitution of ‘template<class Out_T> typename std::enable_if<std::is_same<Out_T, int>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:366:13: required from ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’ tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:430:10: error: no type named ‘type’ in ‘struct std::enable_if<false, Eigen::Matrix<double, 3, 1> >’ source/boundaries/variable_to_option.hpp: In instantiation of ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:452:10: note: template<class Out_T> typename std::enable_if<std::is_same<Out_T, double>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Out_T; Last_Variable = Momentum_Density] >::type get_parsed_value(const std::array<double, 3>& position) ^ source/boundaries/variable_to_option.hpp:452:10: note: template argument deduction/substitution failed: source/boundaries/variable_to_option.hpp: In substitution of ‘template<class Out_T> typename std::enable_if<std::is_same<Out_T, double>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:366:13: required from ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’ tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:452:10: error: no type named ‘type’ in ‘struct std::enable_if<false, Eigen::Matrix<double, 3, 1> >’ source/boundaries/variable_to_option.hpp: In instantiation of ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:474:10: note: template<class Out_T> typename std::enable_if<pamhd::boundaries::detail::is_std_array_double<Out_T>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Out_T; Last_Variable = Momentum_Density] >::type get_parsed_value(const std::array<double, 3>& position) ^ source/boundaries/variable_to_option.hpp:474:10: note: template argument deduction/substitution failed: source/boundaries/variable_to_option.hpp: In substitution of ‘template<class Out_T> typename std::enable_if<pamhd::boundaries::detail::is_std_array_double<Out_T>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:366:13: required from ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’ tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:474:10: error: no type named ‘type’ in ‘struct std::enable_if<false, Eigen::Matrix<double, 3, 1> >’ source/boundaries/variable_to_option.hpp: In instantiation of ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:529:10: note: template<class Out_T> typename std::enable_if<pamhd::boundaries::detail::is_eigen_vector_double<Out_T>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Out_T; Last_Variable = Momentum_Density] >::type get_parsed_value(const std::array<double, 3>& position) ^ source/boundaries/variable_to_option.hpp:529:10: note: template argument deduction/substitution failed: source/boundaries/variable_to_option.hpp: In substitution of ‘template<class Out_T> typename std::enable_if<pamhd::boundaries::detail::is_eigen_vector_double<Out_T>::value, Out_T>::type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_parsed_value(const std::array<double, 3ul>&) [with Out_T = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:366:13: required from ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’ tests/program_options/variable_to_option.cpp:135:57: required from here source/boundaries/variable_to_option.hpp:529:10: error: no type named ‘type’ in ‘struct std::enable_if<false, Eigen::Matrix<double, 3, 1> >’ source/boundaries/variable_to_option.hpp: In member function ‘typename Last_Variable::data_type pamhd::boundaries::Variable_To_Option<Last_Variable>::get_data(const Last_Variable&, const std::array<double, 3ul>&) [with Last_Variable = Momentum_Density; typename Last_Variable::data_type = Eigen::Matrix<double, 3, 1>]’: source/boundaries/variable_to_option.hpp:367:2: warning: control reaches end of non-void function [-Wreturn-type] } ^ >From gcc-bugs-return-456672-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Jul 17 20:41:43 2014 Return-Path: <gcc-bugs-return-456672-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org> Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 20076 invoked by alias); 17 Jul 2014 20:41:42 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: <gcc-bugs.gcc.gnu.org> List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/> List-Post: <mailto:gcc-bugs@gcc.gnu.org> List-Help: <mailto:gcc-bugs-help@gcc.gnu.org> Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 19852 invoked by uid 48); 17 Jul 2014 20:41:33 -0000 From: "dominiq at lps dot ens.fr" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/61831] [4.9.1 regression] runtime error: pointer being freed was not allocated Date: Thu, 17 Jul 2014 20:41:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Version: unknown X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: dominiq at lps dot ens.fr X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: <bug-61831-4-kVmNAE5NKU@http.gcc.gnu.org/bugzilla/> In-Reply-To: <bug-61831-4@http.gcc.gnu.org/bugzilla/> References: <bug-61831-4@http.gcc.gnu.org/bugzilla/> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-07/txt/msg01263.txt.bz2 Content-length: 3543 https://gcc.gnu.org/bugzilla/show_bug.cgi?ida831 --- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- > Confirmed with 4.9.1 revision r212339. AFAICT revision r210749 is OK. > I suspect r211405 for 4.10 and r212329 for 4.9. Can you revert r212329 > and see if the error disappear? I am afraid that I am the culprit, i.e., r212329: I get the error with r209838 + the patch in r212329. However the failures are not exactly the same: with 4.9.1 revision r212339, it is | Creating decay process library for particle W+ | Process library 'default_lib_dp24': initialized | decay_p24_1: W+ => dbar u | Process library 'default_lib_dp24': recorded process 'decay_p24_1' | decay_p24_2: ?O => sbar c | Process library 'default_lib_dp24': recorded process 'decay_p24_2' | decay_p24_3: => e+ nue whizard(32872,0x7fff7738d310) malloc: *** error for object 0x7f805874ea60: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug while with r209838 + patch, it is | Creating decay process library for particle W+ | Process library 'default_lib_dp24': initialized | decay_p24_1: W+ => dbar u | Process library 'default_lib_dp24': recorded process 'decay_p24_1' | decay_p24_2: => sbar c | Process library 'default_lib_dp24': recorded process 'decay_p24_2' whizard(36947,0x7fff7738d310) malloc: *** error for object 0x7fb8c3755810: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug For 4.9.0, I get | Creating decay process library for particle W+ | Process library 'default_lib_dp24': initialized | decay_p24_1: W+ => dbar u | Process library 'default_lib_dp24': recorded process 'decay_p24_1' | decay_p24_2: W+ => sbar c | Process library 'default_lib_dp24': recorded process 'decay_p24_2' | decay_p24_3: W+ => e+ nue | Process library 'default_lib_dp24': recorded process 'decay_p24_3' | decay_p24_4: W+ => mu+ numu | Process library 'default_lib_dp24': recorded process 'decay_p24_4' | decay_p24_5: W+ => tau+ nutau | Process library 'default_lib_dp24': recorded process 'decay_p24_5' | Integrate: current process library needs compilation | Process library 'default_lib_dp24': compiling ... | Process library 'default_lib_dp24': writing makefile | Process library 'default_lib_dp24': writing driver | Process library 'default_lib_dp24': creating source code rm -f decay_p24_1_i1.f90 rm -f opr_decay_p24_1_i1.mod rm -f decay_p24_1_i1.lo rm -f decay_p24_2_i1.f90 rm -f opr_decay_p24_2_i1.mod rm -f decay_p24_2_i1.lo rm -f decay_p24_3_i1.f90 rm -f opr_decay_p24_3_i1.mod rm -f decay_p24_3_i1.lo rm -f decay_p24_4_i1.f90 rm -f opr_decay_p24_4_i1.mod rm -f decay_p24_4_i1.lo rm -f decay_p24_5_i1.f90 rm -f opr_decay_p24_5_i1.mod rm -f decay_p24_5_i1.lo /usr/local/bin/omega_SM.opt -o decay_p24_1_i1.f90 -target:whizard -target:parameter_module parameters_SM -target:module opr_decay_p24_1_i1 -target:md5sum 'B42EAF21C73773800B93C9AE1495DD00' -fusion:progress -decay 'W+ -> dbar u' make: /usr/local/bin/omega_SM.opt: Command not found make: *** [decay_p24_1_i1.f90] Error 127 | command: make source -j1 -f default_lib_dp24.makefile | Return code = 512 ****************************************************************************** ****************************************************************************** *** FATAL ERROR: System command returned with nonzero status code ****************************************************************************** ****************************************************************************** WHIZARD run aborted.
reply other threads:[~2014-07-17 20:15 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-61836-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).