You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(142) |
Jun
(4) |
Jul
(7) |
Aug
(5) |
Sep
(1) |
Oct
(2) |
Nov
|
Dec
(33) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(64) |
Feb
(97) |
Mar
(62) |
Apr
(13) |
May
(11) |
Jun
(4) |
Jul
(3) |
Aug
(39) |
Sep
(87) |
Oct
(116) |
Nov
(42) |
Dec
(22) |
2002 |
Jan
(68) |
Feb
(50) |
Mar
(84) |
Apr
(116) |
May
(193) |
Jun
(184) |
Jul
(118) |
Aug
(170) |
Sep
(139) |
Oct
(141) |
Nov
(210) |
Dec
(140) |
2003 |
Jan
(133) |
Feb
(161) |
Mar
(125) |
Apr
(34) |
May
(149) |
Jun
(173) |
Jul
(79) |
Aug
(146) |
Sep
(73) |
Oct
(76) |
Nov
(102) |
Dec
(83) |
2004 |
Jan
(138) |
Feb
(148) |
Mar
(120) |
Apr
(65) |
May
(76) |
Jun
(123) |
Jul
(58) |
Aug
(82) |
Sep
(105) |
Oct
(68) |
Nov
(119) |
Dec
(120) |
2005 |
Jan
(87) |
Feb
(89) |
Mar
(52) |
Apr
(67) |
May
(112) |
Jun
(109) |
Jul
(44) |
Aug
(99) |
Sep
(82) |
Oct
(36) |
Nov
(25) |
Dec
(38) |
2006 |
Jan
(7) |
Feb
(60) |
Mar
(12) |
Apr
(32) |
May
(26) |
Jun
(6) |
Jul
(5) |
Aug
(38) |
Sep
(6) |
Oct
(19) |
Nov
(140) |
Dec
(34) |
2007 |
Jan
(31) |
Feb
(51) |
Mar
(57) |
Apr
(5) |
May
(11) |
Jun
(35) |
Jul
(14) |
Aug
(79) |
Sep
(38) |
Oct
(22) |
Nov
(13) |
Dec
(15) |
2008 |
Jan
(29) |
Feb
(2) |
Mar
(30) |
Apr
(17) |
May
|
Jun
(3) |
Jul
(25) |
Aug
(16) |
Sep
(27) |
Oct
|
Nov
(17) |
Dec
|
2009 |
Jan
|
Feb
(2) |
Mar
(37) |
Apr
(23) |
May
(44) |
Jun
(15) |
Jul
(5) |
Aug
(1) |
Sep
(22) |
Oct
(14) |
Nov
(24) |
Dec
|
2010 |
Jan
(5) |
Feb
(1) |
Mar
(5) |
Apr
(7) |
May
|
Jun
(2) |
Jul
(5) |
Aug
(7) |
Sep
(4) |
Oct
(6) |
Nov
(9) |
Dec
(2) |
2011 |
Jan
|
Feb
(12) |
Mar
(10) |
Apr
|
May
(1) |
Jun
(2) |
Jul
(3) |
Aug
(16) |
Sep
(31) |
Oct
(3) |
Nov
(4) |
Dec
(3) |
2012 |
Jan
|
Feb
(2) |
Mar
(3) |
Apr
|
May
(7) |
Jun
(6) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(2) |
Dec
(1) |
2013 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
(2) |
Oct
(1) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(10) |
May
|
Jun
|
Jul
(2) |
Aug
(5) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(2) |
2016 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2017 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(1) |
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(1) |
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <Rap...@po...> - 2013-10-29 17:36:14
|
Quoting Joseph Wang <joe...@gm...> from ml.softs.gtk-gnutella.devel: :I'm getting segfaults in gtk-gnutella that seem to be the result of bad :data in the gnutls layer when verifying SVN signatures. I've gotten :everything to work by converting the call to the non-deprecated SVN api. Thanks Joseph. Which version of TLS are you using? You can conveniently get this information by running gtk-gnutella --version FYI, your patch does not compile with TLS 2.10.2 and TLS 2.12.23, which are the versions I use on Windows and Linux respectively. To be able to add your patch to the source tree, I need to know which version you have on your system so that I can make the compilation conditional to a specific version. The gnutls_pubkey_verify_data2() is missing in TLS 2.12.23. The gnutls_pubkey_t typedef is missing in TLS 2.10.2. Thanks, Raphael |
From: Raphael M. <Rap...@po...> - 2013-09-01 21:30:54
|
Dear Gnutella fans, Finally, at last, gtk-gnutella reaches version number 1.0. Some will say it was long due, others will say it's just a version number. Regardless, this new release is an important milestone because it is the last version that will be mono-threaded. Future releases will use a new runtime that will allow multiple threads to run concurrently, to be able to exploit common multi-core systems nowadays. Hence, 1.0 to signal that this is the last mono-threaded release... :-) In the forthcoming weeks, I'm going to brainstorm on #gtk-gnutella (at irc.freenode.net) about what to do next for the future releases. Which direction to go? How can we exploit the solid GTKG core to do even greater things? Given the limited manpower available on the project currently, I want to be able to focus on what is important, strategically important. You are all welcome to join on the IRC channel, during the evenings in Europe... Here is the changelog of the release. As usual, I hope you will enjoy using gtk-gnutella as much as we enjoy developing it and bringing it to you. # v 1.0.0 2013-09-01 [stable] This is a major release correcting a few bugs and adding small but interesting features such as the ability to limit dropping of received UDP messages, making the DHT keys and values persistent across sessions, SDBM file auto-compaction at startup, and last but not least, rarest-chunk downloading to optimize download efficiency when facing partial sources. New Features: - Let users define a maximum lease time for UPnP and NAT-PMP mappings. - Made DHT keys and values persistent across sessions. - When there are partial sources for a file, download the rarest chunks first. Improvements: - [GTK1] Optimize massive updating of the download source list. - [GTK] Dynamically update the list of available chunks in the file (blue line). - Files used to persist information across sessions are now auto-compacted. - The UPnP layer can now monitor more types of Internet Gateway Devices. - After unclean shutdown, rename existing core file in crash directory. - Detect servers that choke when receiving pipelined HTTP requests. - Added the Mersenne Twister Pseudo-Random Number Generator. - Remember when user requests an auto-restart, to keep the same session going. - Increased maximum download buffer size to 1 MiB and default to 128 KiB. Bug Fixes: - [GTK2] Set height of the pref/upload window (paths to files) to 100 pixels. - [GTK1] Fixed wrong enum value usage (c_fi_sources instead of c_src_num). - [GTK] Download source details were incorrect sometimes for queued downloads. - [GTK] Reserve display of partial file indication (PFS) to partial sources. - DHT traffic accounting was broken when semi-reliable UDP was introduced. - Was wrongly keeping orphan DHT contacts and removing alive ones! - Fixed wrong restarting DB key computation for DHT values (preventing crashes). - Fixed improper "good" alt-loc flagging from uploaders, leading to wrong mesh. - Fixed English typos in comments and user-visible messages. - Avoid selecting the magic fw-fw file index for partial files in query hits. - Fixed wrong propagation of duplicate messages with higher TTL. Under the Hood: - Fixed posix_memalign() so that we can now run with glib 2.36 and upwards. - [GTK] Update available ranges when the core sends a "range changed" event. - Added UDP datagram read-ahead to minimize local kernel drops (RX queue full). - Added UDP read-ahead statistics. - Ensure "DHT values" and "DHT raw data" SDBM files are consistently reloaded. - Fixed omalloc() memory usage accounting. - str_at(): fixed harmful typo causing it to seg-fault with negative offsets. - Do not send X-Features / X-Token on follow-up HTTP requests. - upnp_dscv_probed(): plugged memory leak. - UPNP: extract the Service Control Protocol Definition (SCPD) URL. - UPNP: monitor gateway with GetStatusInfo() if no GetTotalPacketsReceived(). - Some UPnP devices can advertize an API and yet return 401 (action invalid). - bigkey_hash(): more robust in case we encounter a big key and support is off. - udp_sched_write_error(): don't panic if we get an unexpected UDP write error. - Jumbo patch: replaced most gm_[v]snprintf() with str_[v]bprintf() calls. - Count truncated incoming UDP messages. - http_got_header(): fixed harmful typo causing mishandling of chunked output. - After 3 X-Nalt reports, move source from download mesh to the banned mesh. - Leave banned entries in the bad mesh for at least 5 minutes. - cq_free(): release mutex to prevent loud warning a shutdown time. - When the the crash handler child fails, append decorated stack from parent. - download_data_received(): extend fileinfo when file size is unknown. - Moved HTTP range parsing / handling from core to library (re-architectured). - Benchmark sorting routines at startup and select the most efficient. - socket_udp_flush_timer(): do not process queued datagrams during shutdown. - Make rand31() more random, especially on the low-order bits. - Added computation of chi-squared cumulative distributions. - Made entropy_random() 5 times faster on average. - Prefer random_value() over random_u32() followed by bit masking. - The random layer now uses the Mersenne Twister, excepted for random_bytes(). - hash_keyset_lookup(): was not always spotting first tomb correctly. - Let small hash tables be denser than larger ones. - Tweaked hash tables and derivatives for smaller memory footprint. - guess_pmsg_free(): make sure pool does not contain host before adding it back. - http_send_status(): was not properly detecting too large HTTP headers. - Semi-reliable RX UDP: re-ack everything well before the whole message expires. - Adjust maximum DHT value count per IP/network dynamically with DHT size. - Be careful when truncating body on an HTTP kept-alive connection. - ensure_unicity(): assume pidfile is locked when lock owner bears our PID. - Added protection when writing important files on filesystems like "ext4". - PARQ: accept to move an upload to the "dead" queue even if we wait for QUEUE. - Made GTK2 the default GTK version since GTK1 is not 64-bit safe. Thanks! Raphael |
From: Jeroen A. <je...@as...> - 2013-07-30 07:24:31
|
Hello Luis, You probably want to compile against GTK2 instead of 1, you can use ./build.sh --gtk2 to compile with gtk2 support. You'll need to have the 'libgtk2.0-dev' package installed, - Jeroen Op 29 jul. 2013, om 22:52 heeft luis-google <lui...@gm...> het volgende geschreven: > Good day for all: > > the next summary and error result from instalation process: > > > Feature Summary (Version 0.98.4): > ------------------------------------------------- > GLib version : glib-1.x > GUI front-end : GTK1 > GnuTLS support : yes > NLS (Native Language Support) : yes > Fast assertions : yes > DBus support (experimental) : yes > Remote Shell Interface (deprecated): no > ------------------------------------------------- > ERROR: Cannot compile against GLib. Library or header files might be > missing. > ADVICE: Run "apt-get install libglib1.2-dev". > ERROR: Cannot compile against Gtk+. Library or header files might be > missing. > ADVICE: Run "apt-get install libgtk1.2-dev". > > I search with "aptitude search libglib" and find versions to 2.0 for > both programs. > I've ubuntu 10.04 updated. > > Thanks. > > luis jaime > > ------------------------------------------------------------------------------ > Get your SQL database under version control now! > Version control is standard for application code, but databases havent > caught up. So what steps can you take to put your SQL databases under > version control? Why should you start doing it? Read more to find out. > http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk > _______________________________________________ > gtk-gnutella-devel mailing list > gtk...@li... > https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel > |
From: luis-google <lui...@gm...> - 2013-07-29 20:52:49
|
Good day for all: the next summary and error result from instalation process: Feature Summary (Version 0.98.4): ------------------------------------------------- GLib version : glib-1.x GUI front-end : GTK1 GnuTLS support : yes NLS (Native Language Support) : yes Fast assertions : yes DBus support (experimental) : yes Remote Shell Interface (deprecated): no ------------------------------------------------- ERROR: Cannot compile against GLib. Library or header files might be missing. ADVICE: Run "apt-get install libglib1.2-dev". ERROR: Cannot compile against Gtk+. Library or header files might be missing. ADVICE: Run "apt-get install libgtk1.2-dev". I search with "aptitude search libglib" and find versions to 2.0 for both programs. I've ubuntu 10.04 updated. Thanks. luis jaime |
From: Jeroen A. <je...@as...> - 2013-05-09 10:16:11
|
Hello all, As of yesterday translations are managed via transifex, the project URL is https://www.transifex.com/projects/p/gtk-gnutella/ . The status of the translations for the upcoming release is: Dutch (team) 100% English (source) 100% French (team) 99% Turkish (team) 99% Spanish 81% Norwegian Bokmål 78% Japanese 75% Chinese (China) 49% Greek 48% German 47% Italian 46% Hungarian 22% Ukrainian 6% If you'd like to join the teams just request access via transifex. If there is no team yet feel free to start one. Besides using the webinterface, it is still possible to use your favorite po editor if you whish. - Jeroen |
From: <Rap...@po...> - 2013-02-18 11:56:02
|
Quoting jc y <yj...@gm...> from ml.softs.gtk-gnutella.devel: :i try to build it in Windows(7) with mingw. :but can't build, with error message below. : :ERROR: Cannot compile against Glib. Library or header files might be :missing. :ERROR: Cannot compile against Gtk+. Library... Can you show me the output of the following command: /mingw/lib/gtk/bin/pkg-config.exe --cflags glib-2.0 :what is problem? how can i build? How do you build exactly? Which command did you launch? For the record, I build flawlessly on Windows 7, so there must be something that is not right in your environment. Raphael |
From: Raphael M. <Rap...@po...> - 2012-12-10 22:12:13
|
I recently committed a set of interesting new features on the "devel" branch. In particular, I would like to highlight the support for "rarest chunk" downloading. This is something that had been sitting on my TODO list for almost 9 years, but I always had something more important to do, and I lacked the proper data structures to do that efficiently. This has now been fixed and the rarest-chunk alogorithm kicks in when there are partial files among the sources of a file. It splits the file to download in chunks, sorted by how many sources actually do supply us with these chunks. And it then selects the ones offered by the least amount of sources to download first. This has two nice consequences: - It protects against lossage of full sources: because the rarest chunks have been already downloaded, the ones offered by the partial sources can then be downloaded and the full file can be reassembled locally. - It maximises the usefulness of partial sources: when downloading from a full source, the algorithm will not pick chunks made available by partial sources, if it can avoid it, and therefore these partial sources will be able to fully contribute to the download speed-up when they become active. This looks very promising. Algorithmically, the implementation relies on red-black trees to efficiently store the set of chunks, ensuring logarithmic search time. This is much better than the old linear search that was done. The chunk pick-up code for downloading with only full sources will benefit from this algorithmic improvements because the set of available HTTP ranges is now stored in a red-black tree as well, and no longer in a plain list. There are also other minor (but hopefully nice) improvements recently committed that should further help with 9+ year-old bugs in the alt-loc processing. For instance, I accidentally discovered that support for X-Nalt (negative alternate locations) was not 100% finished -- we were parsing these locations but we were never actually remembering them as being "bad". Anyway, please test these new features by updating from the "devel" branch in git and let me know if something odd occurs, or if these new features cause a crash somehow, due to the presence of new assertions and new logic. Thanks, Raphael |
From: Raphael M. <Rap...@po...> - 2012-11-11 17:27:04
|
Dear Gnutella fans, A new release has just been uploaded to sourceforge. Here are the changes since 0.98.3, as listed in the ChangeLog file: # v 0.98.4 2012-11-04 [stable] This is an important release correcting severe bugs affecting the overall wealth of the system: the PARQ upload queue was not properly restored, the DHT was not always sending correct values back (resulting in failed lookups), and SDBM (our hash-on-disk database) had two well-hidden bugs that could cause crashes at startup or that compromised regular runtime operations. This release also introduces an interesting improvement: we are now using a reliable UDP layer to transfer out-of-band query hits, ensuring that these important messages are properly sent and received and never lost. The SPAM-detection on query hits received via UDP was too eager to discard results from perfectly valid sources, causing improper loss of results from your queries. We were also wrongly sending out more queries than necessary: a long-standing bug caused locally-issued OOB-proxied queries to be re-emitted a second time, and we were re-forwarding duplicate queries (received with higher TTL than before) to all the leaves. Although not harmful, these two bugs were wasting some of the outgoing bandwidth when running as a ultra node. New Features: - Plugged support for "OOB Proxy Veto". - Added a Semi-Reliable UDP layer for Gnutella for safe OOB hit delivery. - Report and display available file size when handling hits for partial files. Internationalization: - Added French and Turkish translations of the FAQ. - Updated French and Turkish translations. - Fixed typo in a German translation. - Cleanup of the English FAQ, updating obsolete answers. Improvements: - [GTK] Show different icon and tooltip when port mapping done through NAT-PMP. - [GTK] Flag results from servents with a banned GUID in the "Info" column. - [GTK] Windows version now compiled with GTK 2.24.10. - Non-sharing servents can now be promoted to ultra peers (in automatic mode). - Be stricter about vendor messages origin: ignore them if from wrong protocol. - Strip GGEP "NP" key from relayed queries. - Use higher-priority UDP messages for important or time-sensitive data. - Use semi-reliable UDP to transfer critical data (query hits). - Make sure the queries we OOB-proxy have a GGEP "SO" key for secure OOB hits. - Ignore unsecure OOB hit promises from hosts known to support secure OOB. - Use some of our connected ultra nodes when filling UHC pongs. - Updated GeoIP databases. - When resuming from crashes, do not stop session-only searches. - Persist selected search media types from session to session. - Report last modification time + available size of partial files in hits. - Added "webm" and "zoo" to the list of file extensions that can be shared. - Display unexpected command-line argument before usage output. - The shell "status" command now shows how port mapping was done, if any. - Do not forward "What's New?" queries to leaf nodes with empty routing tables. Bug Fixes: - Avoid segmentation fault if GUESS 0.2 cache is empty. - Avoid SDBM crash when clearing database which had big keys/values present. - Use signed arithmetic to compute compression ratios. - Consider x.x.x.0 as a possibly valid IPv4 address. - Was not correctly parsing the saved PARQ queue, causing undue forgetting. - Fixed key accounting in DBMW. - SDBM was sometimes not iterating over unflushed dirty LRU pages. - Fixed wrong DHT value response message format. - Fixed crash when attempting to browse host on a queued source. - Do not route duplicate queries with higher TTL to leaves. - Prevent sending of duplicate (locally issued) OOB-proxied queries. - Fixed startup crash bug on Ubuntu machines. - Changed the Debian menu icon to use the one which is 32x32, as lintian wants. - Fixed auto-restart function on 64-bit Windows. Under the Hood: - [GTK] Darken the color used to display partial results (yellow -> dark gold). - Various PARQ cleanup to smooth QUEUE callback operations. - Fallback to pre-computed symbol file when loaded symbols are garbage. - Relax file_path_set() and open_read() to gracefully handle relative paths. - get_folder_basepath(): protect against unsuitable environment variables. - Recompute the amount of banned fds dynamically as config parameters change. - Detect series of unclaimed OOB hits from a host to ignore further queries. - Changed MUID marking strategy in queries to better accomodate OOB proxying. - Added a UDP TX scheduler to optimize datagram sending by priority. - Enhanced the incremental zlib operations, reusing objects across operations. - Added new official ISO 3166 country codes. - node_read(): was wrongly resizing the message buffer for each message! - Refactored aging table to lower memory footprint (by 6 pointers per entry). - On Windows, keep last 3 stdout/stderr logs, created when launched from GUI. - Send important UDP messages with a "control" priority. - Count TCP push-proxy requests aimed at firewalled-to-firewalled connections. - Patch UDP PUSH messages aimed at initiating firewall-to-firewall transfers. - Count received PUSHes requesting FW-FW transfers, plus those targeting us. - dht_init(): do not reset the KUID if DHT disabled at startup. - Detect whether we are restarting after a clean shutdown or after a crash. - bg_task_terminate(): don't panic at shutdown when handling unaccounted tasks. - Reserve only about 40% of the available virtual memory space on Windows. - Always discover port-mapping devices, even if they won't be used. - Ensure reasonable TTL and hops for PUSH messages from UDP we will route. - The shell "nodes" command now displays the gnet port along with the address. - Added metaconfig check for malloc() superseding. - New switch --disable-malloc added to build.sh to prevent superseding malloc(). - When launching gdb during crash, ask for threads and thread stacks as well. - External IP changes were not waiting for 3 hosts in 3 different CIDR ranges. - Removed too restrive permissions in the man page (COPYRIGHT section). - Shell meta-chars in executable path do not prevent loading symbols via BFD. - Added more DHT statistics. Enjoy! Raphael |
From: Raphael M. <Rap...@po...> - 2012-11-06 20:37:04
|
I was planning on releasing 0.98.4 last week-end but I had to stop the release countdown a few minutes before proceeding because one critical bug was reported to me by someone running Ubuntu 12.x 64-bit. Meanwhile, I have received some information of problems when running on Windows and I am investigating that. This delaying has enabled me to find a critical bug (causing an assertion failure) in the semi-reliable UDP layer. I have also used the "extra time" I had before the release -- after all we are in a code-freeze period -- to dig into DHT problems I had queued in my TODO list and fix some of them! If you want to help, please grab the latest version of git "devel" (you can also download the devel tarball directly on github I think if you do not wish to install / use git) and use that version extensively. :-) As usual, it is best to e-mail me directly in case of problems. Thanks for your assistance in beta-testing the forthcoming new release! The new ETA for the release is Saturday, November 10th, sometime during the day (probably in the afternoon). Cheers, Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-28 21:39:15
|
I have just pushed a set of important fixes to git on the "devel" branch that I would like to get widely tested before the release, planned for next week-end if no further problems occur! One important fix reverts a bad editing I pushed on Friday, in the DHT code. Another important fix corrects (hopefully) the improperly-shaped DHT VALUE packets, which causes remote nodes to probably ignore the values altogether! Existing GTKG servents surely did ignore these messages, and that bug is very ancient and escaped me -- it dates from the time the DHT was introduced, circa 2008! In essence, it prevented DHT value lookups from actually getting results sent by other GTKG peers... I also included minor fixes in the semi-reliable UDP layer that I am very eager to test. Thanks, Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-24 18:35:52
|
I added a new feature to the semi-reliable UDP layer which is not backward compatible (we're not in production yet, so I took the opportunity to do it now). It is necesary for all beta testers to upgrade their running servent now in order to test the (hopefully final) version of the semi-reliable UDP stack. Thanks, Raphaek |
From: Raphael M. <Rap...@po...> - 2012-10-21 18:52:28
|
Hello, I've made some important fixes today, eradicating a long standing bug in the SDBM layer that prevented correct iterations over "volatile" databases (i.e. those which are mostly held in RAM). I've also fixed a memory leak that I had inadvertently introduced a few weeks ago and which I only found about today, when I saw a list of unreclaimed host atoms during the shutdown of my node. I'm now code-freezing the "devel" branch for the 0.98.4 release. If you are able to recompile, please grab it from git and test it on as many platforms as possible (especially Windows or Mac). Let me know about problems by e-mail. Thanks, Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-16 05:56:31
|
There was a routing bug in the reception (RX) side of the traffic. A message sent on IPv4 had its acknowledgment received by the IPv6 RX stack, which of course was then not recognized and caused retransmission by the IPV4 TX side. Many thanks to Jeroen Asselman who hinted the correct hypothesis to a problem I was fighting on an IPv4-only machine -- which of course did not exhibit the symptoms, leading to a wrong debugging angle that kept me puzzled for a while! (32-bit versus 64-bit, when the problem was IPv4 versus dual v4/v6...) If you're testing "devel", please upgrade and test. I'm probably going to release 0.98.4 in the next two weeks to deploy fixes for grave bugs I encoutered recently whilst working on the semi-reliable UDP layer. Unfortunately, I've started to see consistent crashes due to a lurking bug in the xmalloc() code that is still escaping me and causes random crashes. But I may spend months tracking this problem and auto-restarting somehow makes the problem serious, but not critical -- some of the bugs fixed are critical (non- correctness or wrong semantics). That xmalloc() bug has been around for about a year, but was never manifesting itself on my 32-bit machine. I guess some changes in the allocation patterns due to the introduction of new code explains why it behaves differently. So it will get tracked down eventually, just not now for the release. Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-12 16:16:35
|
I did some more tuning of the semi-reliable UDP stack to make sure hosts are not retransmitting too eagerly (which wastes bandwidth). If you're among the people testing semi-reliable UDP, please upgrade so that I can witness results of the tuning. Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-10 20:03:39
|
Thanks to the people who already downloaded and compiled the "devel" version, I was able to identify some shortcomings (tuning mostly, and one feature I thought about but forgot to implement at the lowest level). Please upgrade to the latest git version. Also I found a bug in incoming UDP message validation which causes a crash (assertion failure) when given an incomplete Gnutella message (less than a Gnutella header), but only in a logging statement... Always annoying regardless! So, if you're contributing to this semi-reliable UDP layer testing, think about checking for updates in git and if you see one, then please recompile and relaunch. I will send a message when I think the layer is stable and I will then move on to new features. But meanwhile, I'm going to tune the layer to be efficient. Right now, the re-transmission strategy is way too aggressive (read "bandwidth consuming"). Raphael |
From: Raphael M. <Rap...@po...> - 2012-10-10 15:57:53
|
Hello, I have added support for a semi-reliable UDP layer in gtk-gnutella. This is mostly the design that was done for the G2 protocol, but I've also designed and implemented some additional improvements (for details, please see doc/gnutella/udp_transceiver). Gtk-gnutella will now use semi-reliable UDP to exchange out-of-band query hits or route back GUESS query hits. This is naturally only done when the remote end has indicated support for it, but GTKG now does so. The aim is to deploy enough "devel" GTKG out there so as to see whether the implementation of the semi-reliable UDP layer has problems. I've been careful in the implementation of course, but network layers are tricky and it's easy to overlook something. So please, if you can compile GTKG, get the latest "devel" branch and try to use it. To get the most visibility you would have to run it as ultrapeer, but leaf node is OK as well (since leaf nodes use GUESS queries anyway). In the weeks to come, provided there is no big breakage, I will switch to the next phase, which is implementing the G2 protocol so that we can finally link Gnutella and G2 properly -- since both networks share the same file exchange logic and conventions but only differ by the querying method. The GUESS model is very close to the G2 querying model anyway, and GUESS has proved to be successful in GTKG to find out files that plain legacy Gnutella querying was not returning (search horizon problems, most likely). However, GUESS is slower than a legacy Gnutella broadcasted search, but it's all about trade-offs... Raphael |
From: Raphael M. <Rap...@po...> - 2012-06-04 22:15:31
|
Dear Gnutella fans, A new minor release has just been uploaded to sourceforge. You may also get it through Gnutella via: magnet:?xt=urn:sha1:EHGW3HFULMJUK2RI3CIHOG7YXEFLMDXO&dn=gtk-gnutella-0.98.3.tar.bz2 Here are the changes since 0.98.2, as listed in the ChangeLog file: # v 0.98.3 2012-06-04 [stable] New Features: - [GTK] Added per-search GUESS statistics line, which can be hidden by users. - [GTK] Display amount of downloads associated with search in the search label. - Added property to control usage of unused Gnutella bandwidth by GUESS. - Added "memory check xmalloc" shell command to monitor the xmalloc freelists. - On Windows, generate a gdb-like stack trace in the crash log file. Improvements: - [GTK] Optimized rendering of main statistics page. - [GTK] Show more accurate message for queued downloads on completed files. - Shell now displays properties with appropriate surrounding type markers. - Limit pongs sent to transient nodes in order to save some bandwidth. - Avoid sending too many pongs on uncompressed connections. - Added README.Windows to document compile instructions for Windows. - Avoid "write() failed: EPIPE" messages from the shell for local client writes. - Added GUESS link cache size to the general statistics pane. - GUESS now uses a dynamically computed outgoing bandwidth limit. - Allow failed TLS connections to be retried without TLS, transparently. - Added "-a" switch to the shell "version" command to display glib/GTK/TLS info. - Added -p switch to the "stats" shell command to pretty-print numbers. - Memory optimization of commonly used data structures to reduce footprint. - Always generate a crashlog file, even when dumping a core. - PARQ: switch actively queued download to another when file has been completed. - Attempt to immediately restart download after failed SHA1 + TTH verification. - At startup, compute TTH if available and SHA1 checking failed. - When switching PARQ 1.0 downloads, switch IDs if queue position is favorable. - Updated translation strings, and fixed French translation. Bug Fixes: - bug #3286824 "Crash at startup / 0.96.9 / FreeBSD AMD64" - Fixed %G formatting bug whereby a zero following a dot would be missed. - Prevent auto-restart when they explicitly request a shutdown. - Fixed grave bugs in the virtual memory layer, some being Windows-specific. - PARQ was not properly computing amortized per-slot time. - Avoid random shell connection failures on Windows. - An un-parseable token in a shell command led to an assertion failure. - Fixed the "alignment optimized" code branch of msort_with_tmp(). - Fixed bad copy-n-paste that could lead to malloc() freelist corruption. - Fixed GUESS corner-case crash when handling an RPC timeout. - [GTK] Avoid crash when user clears the upload statistics (bug #3501181). - On Windows, be smarter when reserving the initial amount of virtual space. - GUESS: always wakeup sleeping queries if we have bandwidth. Under the Hood: - Improved thread-safety of the VMM layer. - Removed perl4-ism in Perl scripts. - Updated IPv4 and IPv6 geo databases. - Attempt to drive a deadlock crash as far as possible to collect debug info. - When logging from another thread (not main), include the small thread ID. - Switched halloc() to xpmalloc() instead of walloc(). - Added thread-private zones for blocks <= 512 bytes for faster allocations. - Optimized access to thread-private information, via a lock-free fast path. - Exit with a zero status when terminating through a regular signal or request. - Some UTF-8 optimizations and low-level fixes. - Also log the faulting PC when we get a harmful signal. - Use the BFD library, if available, to extract symbols from the executable. - Restored ability to have usable stack unwinding on Windows. - Extended crash log information to include full OS name and CPU architecture. - Sort SHA1s in the search.xml file. - Clear whole routing table when switching between Ultra and Leaf modes. - Protect xfree() from algorithmic complexity when handling bursts. - Added xmalloc garbage collector to reclaim fragments from freelist. - Allow the "TLS handshake failed" string to be translated. - Consider IPv4 addresses x.x.x.0 as non-routable. - Now uses own hash table and hash set implementations. - Strengthened entropy collection and ARC4 initial seeding. - Randomly propagate GUESS 0.2 hosts among GUESS 0.2 servents. - Assume we're not firewalled right after initial UPnP or NAT-PMP configuration. - Avoid compiler warnings on Windows. - Make sure random_value() returns uniformly distributed random numbers. - Added ability to filter dumped traffic by IP address. - Changed %F to display whole mantissa before switching to scientific notation. - Ensure memory allocated from the heap is aligned properly. - Show amount of detected CPUs at startup. - Added version numbers to the crash log file name. - Avoid complexity attacks on the hash table. Enjoy! Raphael |
From: <Rap...@po...> - 2012-06-02 11:14:29
|
Quoting Hauke Lathus <ha...@pa...> from ml.softs.gtk-gnutella.devel: :On Saturday 02 June 2012, Raphael Manfredi wrote: :> could you also try to check out the latest git, with no modification, :> and see whether it now works? I've made a tiny change that alters :> the initial memory bootstrapping sequence. : :That works for me, thank you! Good news! :This means that the experiment described :in your previous mail is now unnecessary, right? Correct, thanks for the validation. Now I don't undersand which particular problem is happening on 64-bit that does not on 32-bit CPUs. But at least this removes a show-stopper for the release, and then I'll have more time to investigate during the next devel cycle. Raphael |
From: Hauke L. <ha...@pa...> - 2012-06-02 11:09:59
|
Hi, On Saturday 02 June 2012, Raphael Manfredi wrote: > could you also try to check out the latest git, with no modification, > and see whether it now works? I've made a tiny change that alters > the initial memory bootstrapping sequence. That works for me, thank you! This means that the experiment described in your previous mail is now unnecessary, right? Hauke |
From: <Rap...@po...> - 2012-06-02 08:49:11
|
Hauke, could you also try to check out the latest git, with no modification, and see whether it now works? I've made a tiny change that alters the initial memory bootstrapping sequence. Another user independently confirmed that the problems comes from my malloc() implementation (i.e. switching back to system's malloc() works). Since the only thing that had changed recently was the ordering of the bootstrapping sequence, let's see whether my change restores proper behaviour. Otherwise, I'll have to look deeper but unfortunately, I have no problem on all the 32-bit machines I have access to, be it with GTK1 or GTK2, even on Ubuntu 12.04. So it has to be a 64-bit specific problem. Raphael |
From: <Rap...@po...> - 2012-06-02 06:56:22
|
Quoting Hauke Lathus <ha...@pa...> from ml.softs.gtk-gnutella.devel: :(gdb) thread apply all bt : :Thread 1 (Thread 0x7f53c0dd0920 (LWP 9424)): :#0 0x00007f53bd99a9f0 in read () from /lib/x86_64-linux-gnu/libc.so.6 :#1 0x00007f53be84c50f in ?? () from /lib/x86_64-linux- :gnu/libglib-2.0.so.0 :#2 0x00007f53be811059 in g_main_context_check () from /lib/x86_64- :linux-gnu/libglib-2.0.so.0 :#3 0x00007f53be811472 in ?? () from /lib/x86_64-linux- :gnu/libglib-2.0.so.0 :#4 0x00007f53be8115f4 in g_main_context_iteration () from /lib/x86_64- :linux-gnu/libglib-2.0.so.0 :#5 0x00007f53c06eac81 in gtk_main_iteration () from /usr/lib/x86_64- :linux-gnu/libgtk-x11-2.0.so.0 :#6 0x00007f53c080e26d in gtk_widget_show_now () from /usr/lib/x86_64- :linux-gnu/libgtk-x11-2.0.so.0 :#7 0x000000000055eb8b in main_gui_run (geometry_spec=0x0, minimized=0) :at main.c:940 :#8 0x0000000000414ec4 in main (argc=1, argv=0x7fffcd44f338) at :main.c:1938 This blocking read() call comes from glib's call. I have no idea what glib is trying to do here, and which file descriptor it's trying to read from, but obviously it thinks there's data to read on that fd when there is in fact none. Hard to tell whether it's a side-effect bug from our malloc() or whether it's a true glib bug (could also be a glib bug triggered by a different malloc() behaviour in my implementation). Let's try this experiment: Can you please edit src/lib/xmalloc.c and change the line that defines XMALLOC_IS_MALLOC (line 78, change #if 1 into #if 0) and recompile. Let me know what happens then when you launch gtk-gnutella. Raphael |
From: Hauke L. <ha...@pa...> - 2012-06-01 23:16:22
|
On Wednesday 23 May 2012, Raphael Manfredi wrote: > On which OS (+version + 32/64 bits) are you? Current Debian testing, amd64 > When it freezes, can you launch a debugger on it and see what it's > doing, taking a stack trace? > > Something like: > > gdb /usr/bin/gtk-gnutella 43543 > (gdb) thread apply all bt > > assuming that 43543 is the PID of gtk-gnutella (not that of the ADNS > child). (gdb) thread apply all bt Thread 1 (Thread 0x7f53c0dd0920 (LWP 9424)): #0 0x00007f53bd99a9f0 in read () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007f53be84c50f in ?? () from /lib/x86_64-linux- gnu/libglib-2.0.so.0 #2 0x00007f53be811059 in g_main_context_check () from /lib/x86_64- linux-gnu/libglib-2.0.so.0 #3 0x00007f53be811472 in ?? () from /lib/x86_64-linux- gnu/libglib-2.0.so.0 #4 0x00007f53be8115f4 in g_main_context_iteration () from /lib/x86_64- linux-gnu/libglib-2.0.so.0 #5 0x00007f53c06eac81 in gtk_main_iteration () from /usr/lib/x86_64- linux-gnu/libgtk-x11-2.0.so.0 #6 0x00007f53c080e26d in gtk_widget_show_now () from /usr/lib/x86_64- linux-gnu/libgtk-x11-2.0.so.0 #7 0x000000000055eb8b in main_gui_run (geometry_spec=0x0, minimized=0) at main.c:940 #8 0x0000000000414ec4 in main (argc=1, argv=0x7fffcd44f338) at main.c:1938 (gdb) Hauke |
From: <Rap...@po...> - 2012-05-23 06:33:13
|
Quoting Hauke Lathus <ha...@pa...> from ml.softs.gtk-gnutella.devel: :I cannot even start the latest version. It always freezes after some :seconds (before or just after the first window appears, depending on the :version), so that I have to kill -9 it. : :I have tracked that bug down to commit 6857c124 (xmalloc stuff) from May :15th. Everything before that commit at least starts up fine. Yes, this is the commit that creates a radical change in the initializaiton sequence of the library that GTKG relies upon. So far I managed to debug it on FreeBSD and Windows. It ran perfectly on Linux from the start. On which OS (+version + 32/64 bits) are you? When it freezes, can you launch a debugger on it and see what it's doing, taking a stack trace? Something like: gdb /usr/bin/gtk-gnutella 43543 (gdb) thread apply all bt assuming that 43543 is the PID of gtk-gnutella (not that of the ADNS child). Thanks, Raphael |
From: <Rap...@po...> - 2012-05-23 06:29:41
|
Quoting Alex <al...@be...> from ml.softs.gtk-gnutella.devel: :I hope I'm not suggesting something you already know but have you :given Valgrind a go? I tend to track their SVN but they have just :released a new version in the last few months. Aside from the default :memcheck tool there are also massif (heap profiling) and sgcheck :(stack and array overrun) worth running. Unfortunately, valgrind slows down things up to the point of making gtk-gnutella unusable on my system. Raphael |
From: <Rap...@po...> - 2012-05-23 06:28:36
|
Quoting Meelis Roos <mr...@li...> from ml.softs.gtk-gnutella.devel: :Updated gtk-gnutella git today and I am getting these crashes: :Error-Message: invalid pointer 0x404f5382 in 24-byte malloc freelist: not This is the bug I'm chasing but cannot seem to find. How frequently do you get this? What's the average run before a crash. Last week I got two such crashes after a few hours of runtime, and the same binary has now been up for 5 days... Raphael |