{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":96138741,"defaultBranch":"master","name":"YDB","ownerLogin":"YottaDB","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-07-03T18:21:23.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/29870125?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1708713796.0","currentOid":""},"activityList":{"items":[{"before":"c1e5c04907cbeb12bbaf480032a6b8268efdd930","after":"c0b66bb14e1a9741f77f93eb2a9ed2d8dab448f8","ref":"refs/heads/master","pushedAt":"2024-05-14T02:42:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[GPG] Add David's GPG key","shortMessageHtmlLink":"[GPG] Add David's GPG key"}},{"before":"0e13847321f694bc638c522df211264f9aa54506","after":"c1e5c04907cbeb12bbaf480032a6b8268efdd930","ref":"refs/heads/master","pushedAt":"2024-05-13T13:03:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[YDBTest#598] Fix various issues in SOCKET USE command (GT.M V7.0-003 regression)\n\nBackground\n----------\n* See https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1524#note_1901072557 for more details.\n But basically the below test case failed an assert.\n\n ```sh\n $ $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\":IOERROR=\"NOTRAP\")::\"SOCKET\" use \"socket\":(options=\"KEEPINTVL=0\") '\n %YDB-F-ASSERT, Assert failed in sr_unix/gtm_fd_trace.c line 185 for expression (FALSE)\n ```\n\nIssue\n-----\n* The issue was that a `close(socketptr->sd);` was done in `sr_port/iosocket_tcp_keepalive.c` after\n commit 0e138473 because `freesocket` was TRUE. But in this case, `iosocket_use()` had called\n `iosocket_tcp_keepalive()` with a copy of the socket device (`curr_socketptr` variable in\n `sr_port/iosocket_use.c`) while keeping the original socket device still accessible using\n the variable `socketptr` in `iosocket_use.c`. This meant that `close()` in `iosocket_tcp_keepalive`\n closed `curr_socketptr->sd` and reset it to be `FD_INVALID` but did not do the same to the copy\n `socketptr->sd`.\n\n* And when halting, the process looked at all open devices and found `socketptr->sd` as a valid fd\n and so tried to close it resulting in the `close()` failing and causing the assert.\n\n* There is a pre-existing comment which says `SOCKET_FREE` should not be used on the copy (line 537 below).\n\n **sr_port/iosocket_use.c**\n ```c\n 536 /* Make a copy of the socket_struct so most errors leave the previous structure as is.\n 537 * SOCKET_FREE should not be used on this copy since it frees other things such as buffers\n 538 * DELIMITER is an exception due to how iosocket_delimiter manages storage.\n ```\n\n* Inspite of this, we end up doing a `SOCKET_FREE()` on the copy when called through `iosocket_tcp_keepalive()`\n in `iosocket_use()`.\n\n* This is incorrect and is the cause of the issue.\n\n* Additionally, after the call to `iosocket_tcp_keepalive()`, `iosocket_use.c` does a `free(curr_socketptr)`\n again. This would end up being a double-free.\n\nFix\n---\n* The fix is simple and is to pass `FALSE` as the `freesocket` argument to `iosocket_tcp_keepalive()` in\n `sr_port/iosocket_use.c`.\n\n* And to do the `close(socketptr->sd)` and `SOCKET_FREE(socketptr)` calls only if `freesocket` argument\n is TRUE (previously this happened if `freesocket || trap` was TRUE).\n\n* Note that we still issue a `rts_error` if `freesocket || trap` is TRUE.\n\n* This will take care of all the above described problems.\n\nTests\n-----\n* Below were the tests done to test OPEN/USE with IOERROR=NOTRAP/TRAP. Including scenarios tested during\n commit 0e138473.\n\n ```m\n YDB>open \"socket\":(listen=\"9999:TCP\":IOERROR=\"NOTRAP\":options=\"KEEPINTVL=0\")::\"SOCKET\" set x=$DEVICE zwrite x\n %YDB-E-SETSOCKOPTERR, Setting the socket attribute TCP_KEEPINTVL failed: (errno == 22) Invalid argument\n\n YDB>open \"socket\":(listen=\"9999:TCP\":IOERROR=\"TRAP\":options=\"KEEPINTVL=0\")::\"SOCKET\" set x=$DEVICE zwrite x\n %YDB-E-SETSOCKOPTERR, Setting the socket attribute TCP_KEEPINTVL failed: (errno == 22) Invalid argument\n\n YDB>open \"socket\":(listen=\"9999:TCP\":IOERROR=\"NOTRAP\")::\"SOCKET\" use \"socket\":(options=\"KEEPINTVL=0\") set x=$device use $principal zwrite x zshow \"d\"\n x=\"1,Invalid argument\"\n /dev/pts/1 OPEN TERMINAL NOPAST NOESCA NOREADONLY TYPE WIDTH=124 LENG=51 TTSYNC NOHOSTSYNC\n socket OPEN SOCKET TOTAL=1 CURRENT=0\n SOCKET[0]=h1715372292002 DESC=3 LISTENING PASSIVE NOTRAP PORT=9999\n ZDELAY ZBFSIZE=1024 ZIBFSIZE=131072 NODELIMITER\n\n YDB>open \"socket\":(listen=\"9998:TCP\":IOERROR=\"TRAP\")::\"SOCKET\" use \"socket\":(options=\"KEEPINTVL=0\")\n %YDB-E-SETSOCKOPTERR, Setting the socket attribute TCP_KEEPINTVL failed: (errno == 22) Invalid argument\n ```","shortMessageHtmlLink":"[YDBTest#598] Fix various issues in SOCKET USE command (GT.M V7.0-003…"}},{"before":"778b241ee4bd9cbc570c89c77ee9c67d501ada0e","after":"0e13847321f694bc638c522df211264f9aa54506","ref":"refs/heads/master","pushedAt":"2024-05-10T18:48:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[YDBTest#598] Fix errors in SOCKET OPEN command to show up (GT.M V7.0-003 regression)\n\nBackground\n----------\nBelow is pasted from https://gitlab.com/YottaDB/DB/YDBTest/-/merge_requests/1927#note_1900857290\n\n* @ern0 noted this confusing behavior while writing test cases for !1927.\n\n* This is a short test case, opening a listen port without and with some OPTIONS:\n\n ```sh\n echo 0\n $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\")::\"SOCKET\" use \"socket\"'\n echo 1\n $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\":options=\"KEEPIDLE=0\")::\"SOCKET\" use \"socket\"'\n echo 2\n $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\":options=\"KEEPINTVL=0\")::\"SOCKET\" use \"socket\"'\n echo 3\n ```\n\n* The result is:\n\n ```\n 0\n 1\n 2\n %YDB-E-IONOTOPEN, Attempt to USE an I/O device which has not been opened\n 3\n ```\n\n* As you see, setting KEEPINTVL results that the socket is not being opened.\n\n* I could change `KEEPIDLE=0` to `KEEPALIVE=0` or other parameters, produces no error, only with\n `KEEPINTVL=0`.\n\n* Tried to detect the error:\n\n ```sh\n $ $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\":options=\"KEEPINTVL=0\")::\"SOCKET\" set t=$test use $principal write \"$test=\",t,!'\n $test=1\n ```\n\n ...but it prints: `$test=1`.\n\n* Is it a normal behaviour?\n\nIssue\n-----\n* What @ern0 identified is indeed an issue in my understanding.\n\n* GT.M V7.0-003 (commit 35326517) had changed logic in `sr_port/iosocket_tcp_keepalive.c` that\n issued an `rts_error()` if `trap` was TRUE to do it only if `freesocket && trap` was TRUE.\n\n* `freesocket` is a new parameter that is now passed into `iosocket_tcp_keepalive()`. And it is\n set to `TRUE` in the calls from `iosocket_bind()` (which in turn is called from `iosocket_open()`).\n\n* In case the caller is calling with `freesocket` set to TRUE, it assumes any errors internally\n in `iosocket_tcp_keepalive()` would have issued an `rts_error_csa()` call.\n\n In fact there are comments to this effect in 2 out of 3 callers of `iosocket_tcp_keepalive()`.\n - sr_port/iosocket_connect.c\n - sr_port/iosocket_bind.c\n\n Line 722 is an example comment.\n\n **sr_port/iosocket_connect.c**\n ```c\n 721: if (keepalive_opt && !iosocket_tcp_keepalive(sockptr, keepalive_opt, action, TRUE))\n 722: return FALSE; /* iosocket_tcp_keepalive issues rts_error rather than return */\n ```\n\n* But in the example where `KEEPINTVL=0` is set in the `OPEN` command, the rts_error is not\n being issued.\n\n* This is because although `freesocket` is TRUE, `trap` is FALSE (because `IOERROR=TRAP` was not\n specified in the OPEN command).\n\n* And so `freesocket && trap` evaluates to FALSE and the `rts_error()` call does not happen.\n\n* This should have been `freesocket || trap` in my understanding. This is because if `freesocket`\n is TRUE, the caller assumes the rts_error happens in the callee and so irrespective of the\n value of `trap`, we should issue the error.\n\n* To justify this reasoning, I looked for other usages of `freesocket` and `trap` in if conditions\n in the same line and found the following.\n\n ```sh\n $ rg 'freesocket.*trap'\n sr_port/iosocket_tcp_keepalive.c\n 161: if (freesocket && trap)\n\n sr_port/iosocket_sockopt.c\n 46: if (freesocket || trap)\n 77: if (freesocket || trap)\n ```\n\n* Notice the usages in lines 46 and 77 have `||` whereas the usage in line 161 has `&&`.\n\nFix\n---\n* The fix is simple and is to replace the `&&` in line 161 with a `||`.\n\n* With this change, the same test case that issued a confusing `IONOTOPEN` error above now issues\n a more accurate `SETSOCKOPTERR` error.\n\n ```sh\n $ $gtm_dist/mumps -run %XCMD 'open \"socket\":(listen=\"9999:TCP\":options=\"KEEPINTVL=0\")::\"SOCKET\" use \"socket\"'\n %YDB-E-SETSOCKOPTERR, Setting the socket attribute TCP_KEEPINTVL failed: (errno == 22) Invalid argument\n ```","shortMessageHtmlLink":"[YDBTest#598] Fix errors in SOCKET OPEN command to show up (GT.M V7.0…"}},{"before":"a3fe1c44103b5ef8322dddb6c9276cd48935e31a","after":"778b241ee4bd9cbc570c89c77ee9c67d501ada0e","ref":"refs/heads/master","pushedAt":"2024-05-09T15:41:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1079] Fix ydbinstall.sh --support error on RHEL/SUSE due to lack of lsb_release\n\nRemove requirement for `lsb_release` in YDBSupport dependency check, per https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1521#note_1899377705","shortMessageHtmlLink":"[#1079] Fix ydbinstall.sh --support error on RHEL/SUSE due to lack of…"}},{"before":"d1df3fba90493a40c3ed1dc7847a69951e8364f5","after":"a3fe1c44103b5ef8322dddb6c9276cd48935e31a","ref":"refs/heads/master","pushedAt":"2024-05-09T14:40:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1004] [#1073] [#1079] Several small enhancements to ydbinstall / ydbinstall.sh\n\n- [ #1004] Warning that YottaDB is already installed recommends --plugins-only to install plugins\n\n The warning issued by `ydbinstall` / `ydbinstall.sh` that YottaDB already exists explicitly suggests the `--plugins-only` option if YottaDB already exists. Previously, it only suggested the `--ovewrite-existing` option. [#1004]\n\n- [#1073] POSIX plugin automatically installed as a dependency when ydbinstall installs GUI\n\n The `--gui` option of `ydbinstall` / `ydbinstall.sh` also installs the POSIX plugin as a dependency. Previously, `ydbinstall` / `ydbinstall.sh` did not so install it.\n\n- [#1079] ydbinstall option to install the YDBSupport script\n\n The [YDBSupport script](https://gitlab.com/YottaDB/Util/YDBSupport) captures useful information for YottaDB to provide support. The `--ydbsupport` option of `ydbinstall` / `ydbinstall.sh` installs the script in the `$ydb_dist/plugins` directory so that executing `$ydb_dist/plugins/ydb_support.sh` runs the script. The `--allplugins` option also installs the YDBSupport sript.\n\n- Some minor cleanup.\n- Responses to review comments.\n- Fix clang-tidy pipeline failures.","shortMessageHtmlLink":"[#1004] [#1073] [#1079] Several small enhancements to ydbinstall / yd…"}},{"before":"a3c4a608c46653f741207469d9b903f5ecfd160d","after":"d1df3fba90493a40c3ed1dc7847a69951e8364f5","ref":"refs/heads/master","pushedAt":"2024-05-03T09:22:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#983] Remove misleading comment and associated unnecessary assert (added in 6f67af12)\n\n* See https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1516#note_1890696839 for more details.","shortMessageHtmlLink":"[#983] Remove misleading comment and associated unnecessary assert (a…"}},{"before":"3d190eb438d4c12e88eed522e7d1ae9a74e7a26a","after":"a3c4a608c46653f741207469d9b903f5ecfd160d","ref":"refs/heads/master","pushedAt":"2024-05-02T18:24:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#983] Move MUTRUNCALREADY message from merrors.msg to ydberrors.msg\n\n* Commit 6f67af12 added the `MUTRUNCALREADY` message but added it in the wrong file.\n See https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1516#note_1885437535 for why.\n\n* This commit fixes that by moving this message from merrors.msg to ydberrors.msg.\n\n* As part of the move, the `!/ansi=0` part (which is needed if the message is in `merrors.msg`)\n is removed as it should be absent in errors in `ydberrors.msg`.\n\n* The rest of the changes in this file are all auto-generated files (taken care of by pre-commit hook).","shortMessageHtmlLink":"[#983] Move MUTRUNCALREADY message from merrors.msg to ydberrors.msg"}},{"before":"6f67af128ae4cf0b6b3a4d6fba6b842932c6c8d9","after":"3d190eb438d4c12e88eed522e7d1ae9a74e7a26a","ref":"refs/heads/master","pushedAt":"2024-04-30T20:00:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[YDBTest#598] Fix ZSOCKET(sock,\"OPTION\",index) implementation, add missing options\n\nBackground\n----------\n\n[Release note](http://tinco.pair.com/bhaskar/gtm/doc/articles/GTM_V7.0-003_Release_Notes.html#GTM-F135169) says:\n\n> The $ZSOCKET() function supports an \"OPTIONS\" keyword which takes an index argument and returns a string of the OPTIONS previously specified for the selected socket. The string may not exactly match the string originally specified but has the same meanings.\n\nThe bug revealed during creating the tests, this quote is from [the thread about it](YottaDB/DB/YDBTest!1927 (comment 1865761266)):\n\n> I think I was able to reproduce your issue with the following simple test case. Below is using GT.M V7.0-003.\n\nThe simple test case goes (copied from the thread):\n```\nGTM>set s=\"socket\" open s:(CONNECT=\"tynt:22:TCP\")::\"SOCKET\"\n\nGTM>use s:(options=\"KEEPALIVE=101,KEEPCNT=102,KEEPIDLE=108\")\n\nGTM>use $p\n\nGTM>write $zsocket(s,\"keepalive\",0),!\n101;1\n\nGTM>write $zsocket(s,\"keepcnt\",0),!\n102\n\nGTM>write $zsocket(s,\"keepidle\",0),!\n108\n\nGTM>write $zsocket(s,\"options\",0),!\nKEEPALIVE=108\n\n```\nThe proper result of `write $zsocket(s,\"options\",0)` would be `KEEPALIVE=101,KEEPCNT=102,KEEPIDLE=108`, echoing the values set by the `USE` command. Instead, it mixes first option name with last value.\n\nAlso discovered that `use s:(options=\"KEEPCNT=0\")` and `use s:(options=\"KEEPCNT=128\")` causes assert error.\n\nIssue\n-----\n\nThe implementation of the `$ZSOCKET(s,\"options\",0)` has more problems:\n- it's incomlpete, only reports `KEEPALIVE`, `KEEPCNT` and `SNDBUF`,\n- it produces improper result when more options are set.\n\nThere's an assert(FALSE) in sr_port/iosocket_tcp_keepalive.c, which is unnecessary.\n\nFix\n---\n\nUsing some elements from old code, the implementation of `OPTIONS` have been rewritten:\n- replaced complete block of `case zsocket_options`\n- added a 2-round loop,\n- in the first round, the required string space gets calculated (variable: `determined_length`),\n- between the rounds, the free space is checked,\n- in the second round, the result string is assembled,\n- after the second round, `dst->str.addr` and `dst->str.len` is set, as original code did.\n\nInside the loop, there is a `zsocket_options_item()` call for each option: `KEEPALIVE`, `KEEPIDLE`, `KEEPCNT`, `KEEPINTVL`, `SNDBUF` (aka. `socketptr->iobfsize`). This function calculates the length of the result in round 1, and collects result values in round 2, for the keyword and its structs received as arguments.\n\nRemoved unnecessary assert(). Details in this thread: https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1513#note_1881197086","shortMessageHtmlLink":"[YDBTest#598] Fix ZSOCKET(sock,\"OPTION\",index) implementation, add mi…"}},{"before":"28fa8306024b890eabbf3e911bfcc74cb055745d","after":"6f67af128ae4cf0b6b3a4d6fba6b842932c6c8d9","ref":"refs/heads/master","pushedAt":"2024-04-29T10:56:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#983] Add a better error message when running `mupip reorg -TRUNCATE` twice in a row.","shortMessageHtmlLink":"[#983] Add a better error message when running `mupip reorg -TRUNCATE…"}},{"before":"82ec7a73739d51f49c2ada28ab8e2f1c6052117c","after":"28fa8306024b890eabbf3e911bfcc74cb055745d","ref":"refs/heads/master","pushedAt":"2024-04-28T05:03:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#936] [V70004] Fix deprecated cmake command introduced in V70004\n\nPer https://cmake.org/cmake/help/latest/policy/CMP0153.html (introduced\nin 3.28), `exec_program` should be replaced with `execute_process`.\n\nThis showed up as a warning in a newer version of CMake and was not\ncaught earlier as most of our machines run versions of CMake earlier\nthan 3.28.","shortMessageHtmlLink":"[#936] [V70004] Fix deprecated cmake command introduced in V70004"}},{"before":"ce7ac1d05389ba63e9739b5f61806d79004941b9","after":"82ec7a73739d51f49c2ada28ab8e2f1c6052117c","ref":"refs/heads/master","pushedAt":"2024-04-25T20:43:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1032] Enable EDITING mode for READ by default in GDE if running from a terminal\n\n- If the current device ($IO) is a TERMINAL, EDITING for READ commands is added as a deviceparameter.\n- Respond to review comments.","shortMessageHtmlLink":"[#1032] Enable EDITING mode for READ by default in GDE if running fro…"}},{"before":"f600b7712482a601ea63be56d15fbdf0a946f30e","after":"ce7ac1d05389ba63e9739b5f61806d79004941b9","ref":"refs/heads/master","pushedAt":"2024-04-22T14:33:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#963] [V70005] Fix relink/memleak and relink/shmalloc failures on AARCH64 due to GTM-F135288\n\nBackground\n----------\n* The `relink/memleak` subtest failed with the following symptom on an AARCH64 system.\n\n ```diff\n 5a6,9\n > TEST-E-FAIL, Case 3 failed. Expected the routine object shared memory to be 2 MB in size whereas it is 1 MB.\n > $ydb_autorelink_shm/$gtm_autorelink_shm = 7; routine sizes are as follows: 128281 129713 124570 119823 128614 129577 124048 1048495\n > TEST-E-FAIL, Case 4 failed. Expected the routine object shared memory to be 2 MB in size whereas it is 1 MB.\n > $ydb_autorelink_shm/$gtm_autorelink_shm = 7\n ```\n\n* This failure happened even after YDBTest@6d2cac36 where some YDBTest files were fixed to\n take GTM-F135288 changes in GT.M V7.0-005 into account.\n\nIssue\n-----\n* The issue turns out to be that there was a YDB file that needed change as well to take\n GTM-F135288 changes in GT.M V7.0-005 into account.\n\n* `sr_unix/hugetlbfs_overrides.h` defines the `HUGETLBE_SUPPORTED` macro currently only for\n `x86_64` architecture and not for `aarch64`. This is because GT.M does not support the\n latter architecture and is therefore not aware of that.\n\nFix\n---\n* The fix is simple and is to add an `|| defined(__aarch64__)` to define the macro even for\n AARCH64 systems.\n\nNotes\n-----\n* Note that this still leaves this macro undefined for ARMV7L/ARMV6L systems but those are 32-bit\n systems and it is unlikely to have huge page support there (even a `grep Huge /proc/meminfo`\n yields no line of output likely because of the memory-constrained 32-bit address space).\n Therefore, it is okay to not define this macro for ARMV7L/ARMV6L.","shortMessageHtmlLink":"[#963] [V70005] Fix relink/memleak and relink/shmalloc failures on AA…"}},{"before":"9cd67ac5109afd8d870e3d6be85702fe33b58706","after":"f600b7712482a601ea63be56d15fbdf0a946f30e","ref":"refs/heads/master","pushedAt":"2024-04-19T03:50:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1076] Fix assert failure when hostname is empty in CONNECT parameter of SOCKET device\n\nBackground\n---\nBelow is pasted from #1076\n\nThis is something I accidentally noticed while merging GT.M V7.0-004 and analyzing socket test failures and trying out various things.\n\n**Debug build**\n```m\nYDB>open \"socdev\":(connect=\":5000:TCP\")::\"SOCKET\"\n%YDB-F-ASSERT, Assert failed in sr_port/iosocket_create.c line 189 for expression (last_2colon > sockaddr)\n```\n\nThe Release build gives a proper error.\n\n**Release build**\n```m\nYDB>open \"socdev\":(connect=\":5000:TCP\")::\"SOCKET\"\n%YDB-E-GETADDRINFO, Error in getting address info\n%YDB-I-TEXT, Name or service not known\n```\n\nSo it is most likely a bad assert. The same issue exists in the upstream/GT.M code base too.\n\nIssue\n-----\n* In `iosocket_create()`, the variable `sockaddr` points to the string passed to the `connect`\n deviceparameter. That is, it holds the value `:5000:TCP` in the above example.\n\n* The variable `last_2colon` is obtained by scanning backwards from the end of `sockaddr` and\n stopping when we see the 2nd colon.\n\n* Normally, one would have a hostname/ip-addr at the start of the `connect` value before the\n first colon.\n\n* But in the failing case, the host name is empty. Therefore, `last_2colon` points to the\n first colon which is also the first byte of the string in `sockaddr`. Therefore the two\n variables point to the same location.\n\n* Commit 56d9dc99 (which merged GT.M V7.0-000) added the failing assert `last_2colon > sockaddr`.\n My guess is that they added it to make sure `last_2colon` never goes below `sockaddr`. But\n they did not take into account that it can be `equal to` sockaddr in case of an empty host name.\n\nFix\n---\n* The fix is simple and is to change the `>` to a `>=` in the assert.","shortMessageHtmlLink":"[#1076] Fix assert failure when hostname is empty in CONNECT paramete…"}},{"before":"36cc78bfa6a5d1693c0bc94dae51cead515ce2db","after":"9cd67ac5109afd8d870e3d6be85702fe33b58706","ref":"refs/heads/master","pushedAt":"2024-04-17T09:36:29.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#963] [V70005] Regenerate GTMDefinedTypesInit*.m for sr_x86_64, sr_aarch64 and sr_armv7l","shortMessageHtmlLink":"[#963] [V70005] Regenerate GTMDefinedTypesInit*.m for sr_x86_64, sr_a…"}},{"before":"0ffec49d79cad6cb754deb5f2b7a01a3bb23e3a1","after":"36cc78bfa6a5d1693c0bc94dae51cead515ce2db","ref":"refs/heads/master","pushedAt":"2024-04-11T13:13:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1068] Add CONVERT, HOSTSYNC, TTSYNC device parameters, add missing space in HUPENABLE and change output of NOCENABLE for ZSHOW \"D\"\n\nBackground\n---\n\nBelow is pasted from #1068\n\nI have carefully reviewed the YottaDB online manual for using terminal devices, here: https://docs.yottadb.com/ProgrammersGuide/ioproc.html#using-terminals\n\nI have gone through each parameter and turned it on and off and noted how each parameter affects ZSHOW \"D\". Some parameters show up when on, some when off and some have other patters.\n\nBut there are 3 parameters that are not shown regardless: CONVERT, HOSTSYNC, TTSYNC, HUPENABLE\n\nFEATURE REQUESTS:\n\n* Please include output in ZSHOW \"D\" showing status of terminal device for CONVERT\n* Please include output in ZSHOW \"D\" showing status of terminal device for HOSTSYNC\n* Please include output in ZSHOW \"D\" showing status of terminal device for TTSYNC\n* Please include output in ZSHOW \"D\" showing status of terminal device for HUPENABLE\n\nChange\n---\n\n- Bugfix in `sr_unix/iott_use.c`, changes to `t.c_iflag` and `t.c_lflag` are not stored back in `tt_ptr` after calling `Tcsetattr` and verifying that it was successful. Now fixed.\n- Bugfix in `sr_unix/zshow_devices.c` -- Add missing space after for `HUPENABLE`\n - Previously, parameter that come after `HUPENABLE` will be concatenated with it.\n- Add TTSYNC in `sr_unix/zshow_devices.c`\n - This will output in `ZSHOW \"D\"` when enable as `TTSYNC` and when disable as `NOTTSYNC`\n- Add HOSTSYNC in `sr_unix/zshow_devices.c`\n - This will output in `ZSHOW \"D\"` when enable as `HOSTSYNC` and when disable as `NOHOST`\n- Add CONVERT in `sr_unix/zshow_devices.c`\n - This will output in `ZSHOW \"D\"` when enable as `CONVERT` and not show in ZSHOW \"D\" when disable like HUPENABLE which does the same.\n- Change zshow_param_index in `sr_port/deviceparameters.c` for more appropriate output.\n - For TTSYNC : `TTSYNC` (No change)\n - For NOTTSYNC : `NOTTSY` \\> `NOTTSYNC`\n - For HOSTSYNC : `HOS` \\> `HOSTSYNC`\n - For NOHOSTSYNC : `NOHOST` to `NOHOSTSYNC`\n - For NOCENABLE : `NOCE` to `NOCENABLE` And for changes in `sr_port/deviceparameters.c`\n\n```diff\ndiff --git a/sr_port/deviceparameters.c b/sr_port/deviceparameters.c\nindex 21857808..8c4de9ad 100644\n--- a/sr_port/deviceparameters.c\n+++ b/sr_port/deviceparameters.c\n@@ -3,7 +3,7 @@\n * Copyright (c) 2001-2022 Fidelity National Information\t*\n * Services, Inc. and/or its subsidiaries. All rights reserved.\t*\n *\t\t\t\t\t\t\t\t*\n- * Copyright (c) 2022 YottaDB LLC and/or its subsidiaries.\t*\n+ * Copyright (c) 2022-2024 YottaDB LLC and/or its subsidiaries.\t*\n * All rights reserved.\t\t\t\t\t\t*\n *\t\t\t\t\t\t\t\t*\n *\tThis source code contains the intellectual property\t*\n@@ -107,7 +107,7 @@ LITDEF nametabent dev_param_names[] =\n\n \t,{3,\"NEW*\"}\t,{10,\"NEWVERSION\"}\n \t,{4,\"NOCA*\"}\t,{11,\"NOCANONICAL\"}\n-\t,{4,\"NOCE*\"}\t,{6,\"NOCENA*\"}\t\t/*,{9,\"NOCENABLE\"}*/\n+\t,{4,\"NOCE*\"}\t,{6,\"NOCENA*\"}\t\t,{9,\"NOCENABLE\"}\n \t,{6,\"NOCONV*\"}\t,{9,\"NOCONVERT\"}\n \t,{6,\"NODELI*\"}\t,{11,\"NODELIMITER\"}\n \t,{6,\"NODEST*\"}\t,{9,\"NODESTROY\"}\n@@ -121,7 +121,7 @@ LITDEF nametabent dev_param_names[] =\n \t,{5,\"NOFIX*\"}\t,{7,\"NOFIXED\"}\n \t,{4,\"NOFLA*\"}\t,{5,\"NOFLAG\"}\n \t,{5,\"NOFOL*\"}\t,{8,\"NOFOLLOW\"}\n-\t,{5,\"NOHOS*\"}\t,{6,\"NOHOST*\"}\t\t/*,{10,\"NOHOSTSYNC\"}*/\n+\t,{5,\"NOHOS*\"}\t,{6,\"NOHOST*\"}\t\t,{10,\"NOHOSTSYNC\"}\n \t,{4,\"NOHU*\"}\t,{11,\"NOHUPENABLE\"}\n \t,{4,\"NOIN*\"}\t,{6,\"NOINSE*\"}\t\t/*,{8,\"NOINSERT\"}*/\n \t,{4,\"NOPAG*\"}\t,{5,\"NOPAGE\"}\n@@ -246,7 +246,7 @@ LITDEF\tuint4 dev_param_index[27] =\n \t0, 5, 9, 27, 35, 50, 66, 68, 73, 82, 82, 83, 91, 94,\n\n /*\tO P Q R S T U V W X Y Z end\t */\n-\t162, 171, 190, 191, 206, 226, 236, 242, 243, 258, 259, 260, 283\n+\t164, 173, 192, 193, 208, 228, 238, 244, 245, 260, 261, 263, 285\n };\n\n /* Offset of string within letter in dev_param_names */\n@@ -257,11 +257,11 @@ LITDEF zshow_index zshow_param_index[] =\n /*\tALLO BLOC COMMAND CONV CTRA DELE DEST EBCDIC EDIT EMPTERM EXCE EXTE */\n \t{0,0}, {2,1}, {9,2}, {14,2}, {16,2}, {0,3}, {4,3}, {1,4}, {4,4}, {7,4}, {12,4}, {14,4},\n /*\tFIE FIL FIXED FOLLOW HOST ICHSET INDEPENDENT INSE LAB LENG */\n-\t{4,5}, {7,5}, {9,5}, {15,5}, {1,7}, {0,8}, {3,8},\t {7,8}, {0,11}, {2,11},\n+\t{4,5}, {7,5}, {9,5}, {15,5}, {2,7}, {0,8}, {3,8},\t {7,8}, {0,11}, {2,11},\n /*\tNOCENE NODEST NOECHO NOEDIT NOEMPTERM NOESCA NOFOLLOW NOHOST NOINSE */\n-\t{4,13}, {10,13}, {15,13}, {17,13}, {19,13}, {21,13}, {30,13}, {32,13}, {36,13},\n+\t{6,13}, {11,13}, {16,13}, {18,13}, {20,13}, {22,13}, {31,13}, {34,13}, {38,13},\n /*\tNOPAST NOREADS NOTTSY NOTYPE NOWRAP */\n-\t{39,13}, {42,13}, {57,13}, {59,13}, {64,13},\n+\t{41,13}, {44,13}, {60,13}, {61,13}, {66,13},\n /*\tOCHSET PAD PARSE PAST PRMMBX RCHK READ READS REC */\n \t{1,14}, {8,15}, {12,15}, {13,15}, {17,15}, {0,17}, {1,17}, {3,17}, {5,17},\n /* SHAR SHELL STDERR STREAM TERM TTSY TYPE UIC */\n@@ -358,7 +358,7 @@ int deviceparameters(oprtype *c, char who_calls)\n\n \t\t,iop_newversion ,iop_newversion\n \t\t,iop_nocanonical ,iop_nocanonical\n-\t\t,iop_nocenable ,iop_nocenable\n+\t\t,iop_nocenable ,iop_nocenable ,iop_nocenable\n \t\t,iop_noconvert ,iop_noconvert\n \t\t,iop_nodelimiter ,iop_nodelimiter\n \t\t,iop_nodestroy ,iop_nodestroy\n@@ -372,7 +372,7 @@ int deviceparameters(oprtype *c, char who_calls)\n \t\t,iop_nofixed ,iop_nofixed\n \t\t,iop_noflag ,iop_noflag\n \t\t,iop_nofollow ,iop_nofollow\n-\t\t,iop_nohostsync ,iop_nohostsync\n+\t\t,iop_nohostsync ,iop_nohostsync ,iop_nohostsync\n \t\t,iop_nohupenable ,iop_nohupenable\n \t\t,iop_noinsert ,iop_noinsert\n \t\t,iop_page ,iop_page\n```\n\nFirst, for enable `NOCE` to `NOCENABLE` for `NOCENABLE` and `NOHOST` to `NOHOSTSYNC` for `NOHOSTSYNC` we need to uncomment ,{9,\"NOCENABLE\"} and {10,\"NOHOSTSYNC\"} in `dev_param_names` first. After that, we need to change `dev_param_index` to match `dev_param_names` according to comment below\n\n```c\n/* Offset of letter in dev_param_names. Adding e.g. 1 entry there will add 1 to every entry corresponding to subsequent letters */\n```\nWe added 2 entry in `dev_param_names` so we need to add 2 in all character after N which are from O to end in `dev_param_index`.\nThen, we need to add `iop_nocenable` and `iop_nohostsync` in `dev_param_data` that in the same order as `dev_param_names`.\n\nFor changing `NOCE` to `NOCENABLE`, we need to change `zshow_param_index` from {4,13} to {6,13} because these 2 values are index for selecting an entry in `dev_param_names`. `13` means select section 13 that start counting from 0 (Which is section `N`), with 4 as a entry number that start counting from 0 (Which is `NOCE`) to `6,13` which in section 'N' and 58 represent for `NOCENABLE`.\n\nFor this change, because we added 1 entry we also need to change `zshow_param_index` for every entry after `NOCENABLE` to before `NOHOSTSYNC` to add 1 for first sub-index value in each index e.g. for `NODEST` changed from {10,13} to {11,13}.\n\nFor changing `NOHOST` to `NOHOSTSYNC` also need to change from {32,13} : section 'N' and entry number 34 (`NOHOST`) to {34,13} : section 'N' and entry number 2 (`NOHOSTSYNC`).\n\nFor this change we also need to change `zshow_param_index` from every entry after `NOHOSTSYNC` to `NOWRAP` (end of section 'N') we need to add 2 for first sub-index value in each index because we added to entry here e.g. for `NOINSE` changed from {36,13} to {38,13}.\n\nFor changing `NOTTSY` to `NOTTSYNC` need to change {57,13} to {60,13} because we already added 2 for first sub-index and we need to add more 1 to pointing to `NOTTSYNC`\n\nAnd for changing `HOS` to `HOSTSYNC`, no need to add value here need because this handled by changed `dev_param_index` earlier to so we only need to change from {1,7} : section 'H' and entry number 1 (`HOS`) to {2,7} : section 'H' and entry number 2 (`HOSTSYNC`).","shortMessageHtmlLink":"[#1068] Add CONVERT, HOSTSYNC, TTSYNC device parameters, add missing …"}},{"before":"41f8c698e5bf3ab31cbe6a40d88ae675e5c9b44a","after":"0ffec49d79cad6cb754deb5f2b7a01a3bb23e3a1","ref":"refs/heads/master","pushedAt":"2024-04-10T05:56:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[Pipeline] Fix pipeline failure after merge of GT.M V7.0-004 in docker-create stage\n\nBackground\n---\n\nGT.M V7.0-004 changed CMakeLists.txt to require ssl.h. This cause docker-create stage in pipeline to fail\nbecause packages that related to ssl.h is not available in Dockerfile. So, all of Dockerfiles need to\nadd packages that related to `ssl.h` to fix the pipeline issue.\n\nChange\n---\n\n- Dockerfile : This dockerfile is using Ubuntu 22.04 as an OS, so we need to add libssl-dev, libgcrypt-dev and gawk\n- Dockerfile-debian : This dockerfile is using Debian Bullseye as an OS, so we need to add libssl-dev, libgcrypt-dev and gawk (same as Ubuntu)\n- Dockerfile-rocky : This dockerfile is using Rocky as an OS so the packages name will be a little different which are openssl-devel, libgcrypt-devel and gawk.","shortMessageHtmlLink":"[Pipeline] Fix pipeline failure after merge of GT.M V7.0-004 in docke…"}},{"before":"dca00678e11620660b33643ef1a1bf7f41d4886f","after":"41f8c698e5bf3ab31cbe6a40d88ae675e5c9b44a","ref":"refs/heads/master","pushedAt":"2024-04-08T14:31:25.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#936] [V70004] Fix socket/socmemleak subtest failure due to silent merge conflict\n\nBackground\n----------\n* The `socket/socmemleak` subtest in the YDBTest project started failing after\n GT.M V7.0-004 was merged. Below was the failure symptom.\n\n ```diff\n 26c26,27\n < PASSED\n ---\n >\n > FAILED: Memory leak: In 95 iterations, leaked 368600 bytes\n 28c29\n < PASSED\n ---\n > FAILED: Memory leak: In 95 iterations, leaked 369265 bytes\n ```\n\n* The following simple test case demonstrates the failure.\n\n ```m\n $ cat socmemleak.m\n for i=1:1:5 do\n . o \"tcpdev\":(connect=\"tyntmeadow:5000:TCP\":delimiter=\"\":attach=\"connect\"):1:\"SOCKET\"\n . write \"Iteration \",i,\" : $zrealstor = \",$zrealstor,!\n quit\n ```\n\n* One can see that `$zrealstor` keeps increasing in each iteration.\n\n ```sh\n $ mumps -run socmemleak\n Iteration 1 : $zrealstor = 884736\n Iteration 2 : $zrealstor = 887648\n Iteration 3 : $zrealstor = 890560\n Iteration 4 : $zrealstor = 893472\n Iteration 5 : $zrealstor = 896384\n ```\n\n* This used to stay the same before V7.0-004 was merged.\n\nIssue\n-----\n* GT.M V7.0-004 changes added support for `iosocket_connect.c` to honor a user specified timeout.\n (see http://tinco.pair.com/bhaskar/gtm/doc/articles/GTM_V7.0-004_Release_Notes.html#GTM-DE201295\n for the GT.M release note).\n\n* This change caused pre-existing code to suddenly start being exercised. That code determined\n whether a timeout happened by doing a call to `sub_abs_time()` to determine if we are past the\n end time corresponding to the timeout. If ever the result of this function call is a time with\n a negative `tv_sec` value, the `msec_timeout` calculation in the GT.M code worked fine because\n there was a check of `if (0 >= msec_timeout)` and `msec_timeout` was defined as a `int4` type\n (i.e. a signed 4-byte integer). And so in case the timeout has elapsed, `msec_timeout` would\n be a negative value and the `if` check will correctly detect the timeout.\n\n* But in the YottaDB code, timers are in nanoseconds (a prior YottaDB commit). And `nsec_timeout`\n is the corresponding field indicating nanosecond timeout. This is a `uint8` type. That is an\n unsigned 8-byte integer. And therefore, the check of `if (0 >= nsec_timeout)` will work only\n if `nsec_timeout` is 0. Not if it is a negative number because it will never be a negative value\n (a negative value would be a huge positive value in a `uint8` type).\n\n* Therefore, the logic that determined whether the timeout elapsed did not work correctly in the\n YottaDB side resulting in `no_time_left` not being set to TRUE and in turn the return at line\n 558 not happening.\n\n **sr_port/iosocket_connect.c**\n ```c\n 545 if (no_time_left)\n 546 {\n 547 if (NULL != sockptr->remote.ai_head)\n 548 {\n 549 freeaddrinfo(sockptr->remote.ai_head);\n 550 sockptr->remote.ai_head = NULL;\n 551 }\n 552 if (!need_socket)\n 553 {\n 554 close(sockptr->sd);\n 555 sockptr->sd = FD_INVALID;\n 556 }\n 557 SOCKET_FREE(sockptr);\n 558 return FALSE;\n 559 }\n ```\n\n Most importantly, the `SOCKET_FREE` at line 557 was not happening resulting in the memory leak.\n\nFix\n---\n* The logic to set `nsec_timeout` from a delta time (a time value that is obtained by subtracting\n two times) is fixed to check if `tv_sec` is negative and if so treat `nsec_timeout` as 0 and\n otherwise do the pre-existing computation to calculate the nanosecond value.\n\n* This logic is now moved into a new `SET_NSEC_TIMEOUT_FROM_DELTA_TIME` macro and is now used in\n various `sr_port/iosocket_*.c` files thereby avoiding code duplication.","shortMessageHtmlLink":"[#936] [V70004] Fix socket/socmemleak subtest failure due to silent m…"}},{"before":"2d9b3ca17e8dfa3e011945f7b5209905873aae38","after":"dca00678e11620660b33643ef1a1bf7f41d4886f","ref":"refs/heads/master","pushedAt":"2024-04-04T10:54:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#863] [V70002] [YDBTest#587] Fix incorrect %SYSTEM-E-ENO1 accompanying a RLNKINTEGINFO message\n\nBackground\n----------\n* @jirapat.dis noticed this issue while testing `GTM-F135435` as part of YDBTest#587.\n\n* See https://gitlab.com/YottaDB/DB/YDBTest/-/merge_requests/1938#note_1843607971 for more\n details on the issue.\n\n* In short, below is a sample RLNKINTEGINFO message seen in the automated test.\n\n ```\n %GTM-I-RLNKINTEGINFO, Integrity check completed successfully: a loop to the start of linkctl was detected and fixed -- called from module .*/rtnobj.c at line .*, %SYSTEM-E-ENO1, Operation not permitted\n ```\n\n* Notice the `%SYSTEM-E-ENO1` at the end. That is not expected.\n\nIssue\n-----\n* Below is a sample code that issues the `RLNKINTEGINFO` error in the syslog.\n\n **sr_unix/rtnobj.c**\n ```c\n send_msg_csa(CSA_ARG(NULL) VARLSTCNT(8) ERR_RLNKINTEGINFO, 5, LEN_AND_LIT(\"relinkrec->numvers verified\"), CALLFROM, 1, 1);\n ```\n\n* The `RLNKINTEGINFO` message has 5 parameters. The `LEN_AND_LIT` takes up 2 and the `CALLFROM`\n takes up 3 for a total of 5 parameters.\n\n* And so the `VARLSTCNT` count should be 2 more than 5 which is `VARLSTCNT(7)`. But it is coded\n as `VARLSTCNT(8)` which is off by one. That is the first issue.\n\n* The `, 1, 1` that follow `CALLFROM` are 2 extra parameters which are passed incorrectly. It is\n the first of these `1`s that ends up issuing the `%SYSTEM-E-ENO1` error message. This is the\n second issue. These 2 extra parameters need to be removed.\n\nFix\n---\n* Both the above issues are fixed in this commit.","shortMessageHtmlLink":"[#863] [V70002] [YDBTest#587] Fix incorrect %SYSTEM-E-ENO1 accompanyi…"}},{"before":"762acb5477e7608f06f427cf8af1084680966190","after":"2d9b3ca17e8dfa3e011945f7b5209905873aae38","ref":"refs/heads/master","pushedAt":"2024-04-04T03:52:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1069] Only docker tag a YottaDB version in .gitlab-ci if there is a git tag\n\nProblem\n-------\nThe way we did docker images previously had two problems:\n\n1. We pushed release versions (e.g. r1.39 or r2.01) on each commit, when\n these were basically unused and served to confuse users.\n2. Because they were unused, we never detected that these were images\n (AMD64 or AARCH64) rather than manifests (which combine the two into\n a single package). They should be manifests.\n\nSolution\n--------\n1. Remove all releasee tagging from `docker-create` stage\n2. Add a new stage `docker-tag` which only runs when you do a git tag.\n This runs a command found in\n https://github.com/docker/buildx/issues/1744#issuecomment-1896645786\n to add a new manifest with a tag.\n\nPS: I looked to see if there was a way in Gitlab runner to only run a\njob with a git tag on the master repository. There are several hints at\nhttps://gitlab.com/gitlab-org/gitlab/-/issues/34578 (and elsewhere) but\nI didn't feel it worth spending the time to experiment.\n\nI did a good amount of testing detailed below:\n\nBefore\n------\nUntagged pipeline (https://gitlab.com/YottaDB/DB/YDB/-/jobs/6513444579,\nhttps://gitlab.com/YottaDB/DB/YDB/-/jobs/6513444584,\nhttps://gitlab.com/YottaDB/DB/YDB/-/jobs/6513444588)\n\nImages:\n- docker.io/yottadb/yottadb-rocky:latest-master-aarch64\n- docker.io/yottadb/yottadb-rocky:r2.01 << wrong\n- docker.io/yottadb/yottadb-rocky-base:latest-master-aarch64\n- docker.io/yottadb/yottadb-rocky-base:r2.01 << wrong\n\nManifests:\n- docker.io/yottadb/yottadb-rocky:latest-master\n- docker.io/yottadb/yottadb-rocky-base:latest-master-aarch64\n\nGit Tagged pipeline (https://gitlab.com/YottaDB/DB/YDB/-/jobs/6518728035,\nhttps://gitlab.com/YottaDB/DB/YDB/-/jobs/6518728171,\nhttps://gitlab.com/YottaDB/DB/YDB/-/jobs/6519087415)\n\nImages:\n- docker.io/yottadb/yottadb-rocky:latest-amd64\n- docker.io/yottadb/yottadb-rocky:r2.00 << wrong: not a manifest\n- docker.io/yottadb/yottadb-rocky-base:latest-amd64\n- docker.io/yottadb/yottadb-rocky-base:r2.00 << wrong: not a manifest\n\nManifests:\n- docker.io/yottadb/yottadb-rocky:latest\n- docker.io/yottadb/yottadb-rocky-base:latest\n\nAfter\n-----\nNote: tested on my dockerhub namespace `samindcon`.\n\nUntagged pipeline (https://gitlab.com/shabiel/YDB/-/jobs/6519579293,\nhttps://gitlab.com/shabiel/YDB/-/jobs/6519579301,\nhttps://gitlab.com/shabiel/YDB/-/jobs/6519579310)\n\nImages:\n- docker.io/samindcon/yottadb-rocky:latest-master-amd64\n- docker.io/samindcon/yottadb-rocky-base:latest-master-amd64\n- docker.io/samindcon/yottadb-rocky:latest-master-aarch64\n- docker.io/samindcon/yottadb-rocky-base:latest-master-aarch64\n\nManifests:\n- docker.io/samindcon/yottadb-rocky:latest-master\n- docker.io/samindcon/yottadb-rocky-base:latest-master\n\nTagged pipeline (https://gitlab.com/shabiel/YDB/-/jobs/6526290702, https://gitlab.com/shabiel/YDB/-/jobs/6526290713, https://gitlab.com/shabiel/YDB/-/jobs/6534121532, https://gitlab.com/shabiel/YDB/-/jobs/6534121540)\n\nImages:\n- docker.io/samindcon/yottadb-rocky:latest-amd64\n- docker.io/samindcon/yottadb-rocky-base:latest-amd64\n- docker.io/samindcon/yottadb-rocky:latest-aarch64\n- docker.io/samindcon/yottadb-rocky-base:latest-aarch64\n\nManifests:\n- docker.io/samindcon/yottadb-rocky:latest\n- docker.io/samindcon/yottadb-rocky-base:latest\n- docker.io/samindcon/yottadb-rocky:r2.01","shortMessageHtmlLink":"[#1069] Only docker tag a YottaDB version in .gitlab-ci if there is a…"}},{"before":"b1b65f563b28f69240802f3613a6445ef0fe3318","after":"762acb5477e7608f06f427cf8af1084680966190","ref":"refs/heads/master","pushedAt":"2024-04-01T05:24:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1060] Add -verbose as synonym to -dbg for MUPIP BACKUP, MUPIP INTEG and MUPIP FREEZE\n\nAs noted in YDBDoc!691 (comment 1711690048), the DBG command line option is misleading. VERBOSE is more meaningful.","shortMessageHtmlLink":"[#1060] Add -verbose as synonym to -dbg for MUPIP BACKUP, MUPIP INTEG…"}},{"before":"8544e8c058cb43b0dbc158e6b60f28cdeee80bd9","after":"b1b65f563b28f69240802f3613a6445ef0fe3318","ref":"refs/heads/master","pushedAt":"2024-03-29T23:44:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#887] [V70003] Fix v60001/gtm7492 subtest failure (SIG-11) if YottaDB is built with GCC + ASAN\n\nBackground\n----------\n* After GT.M V7.0-003 changes were merged, I noticed the `v60001/gtm7492` subtest fail with\n a SIG-11 in the `test3` stage (see commit message of YDBTest@aefb0302 for more details on\n this test flow).\n\n* Below is a simple test program that demonstrated the failure.\n\n ```m\n $ cat test.m\n view \"NOUNDEF\"\n set j=0\n for i=1:1:3 kill i if $incr(j)=3 quit\n zwrite\n\n $ yottadb -run x\n %YDB-F-KILLBYSIGSINFO1, YottaDB process 93339 has been killed by a signal 11 at address 0x00007F8A005497D0 (vaddr 0x000000FFFF00010F)\n %YDB-F-SIGACCERR, Signal was caused by invalid permissions for mapped object\n ```\n\n* Interestingly, I noticed that only if YottaDB was built with GCC and ASAN, did the SIG-11 occur\n on `x86_64`. If it was not built with ASAN (using GCC or CLANG) or if it was built with CLANG\n and ASAN, the SIG-11 did not occur.\n\nIssue\n-----\n* The core file showed line 59 in `op_forloop.s` as the cause.\n\n ```c\n (gdb) f 6\n #6 l0 () at sr_x86_64/op_forloop.s:59\n\n (gdb) l\n 55 movq %rsi, step(%rbp)\n 56 movq %rdi, indx(%rbp)\n 57 movq %rdi, %rsi\n 58 mv_force_defined_overwrite %rsi, l0 # copy literal_null into control variable if undefined\n --> 59 mv_force_num %rsi, l1\n 60 movq indx(%rbp), %rsi\n 61 movq step(%rbp), %rdi\n\n (gdb) info registers rsi\n rsi 0xffff00010f 1099494850831\n ```\n\n* The issue is that `%rsi` holds a garbage value at line 59. It was initialized at line 57 but somehow\n the value got modified in line 58.\n\n* This is not surprising since `%rsi` is a `callee-owned` register. That means, the caller needs to\n save its value somewhere else if it needs this value preserved across calls.\n\n The macro `mv_force_defined_overwrite` in line 58 in turn can end up calling `underr_overwrite()`.\n\n And that can clobber `%rsi`. This seems to happen only in the GCC + ASAN case. That is most likely\n why the upstream/GT.M folks did not notice this (GT.M does not get built with ASAN).\n\nFix\n---\n* The fix is simple and is to restore the value of `%rsi` just before line 59. This can be done\n using the same logic as in line 60 (i.e. restoring it from the stack).\n\n* While fixing this for the `sr_x86_64/op_forloop.s`, I noticed that a similar issue exists in the\n following files and so fixed those as well.\n - sr_aarch64/op_forloop.s\n - sr_armv7l/op_forloop.s\n\n* While at this, I noticed that `sr_x86_64/mval_def.si` had been modified in a prior commit to\n rename the `mv_force_defined_strict` macro to be `mv_force_defined_overwrite`. But this was not\n done for `sr_aarch64` and `sr_armv7l` versions so took care of that in this commit so it is\n consistent across the board.\n\nNotes\n-----\n* Interestingly, the SIG-11 happened only with GCC + ASAN on `x86_64`. But it happened even without\n ASAN in `armv7l`.","shortMessageHtmlLink":"[#887] [V70003] Fix v60001/gtm7492 subtest failure (SIG-11) if YottaD…"}},{"before":"ba16bd851c91860f27d93c5163b5cd8fcc010e29","after":"8544e8c058cb43b0dbc158e6b60f28cdeee80bd9","ref":"refs/heads/master","pushedAt":"2024-03-29T16:03:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#887] [V70003] Fix .fis-gtm occurrences to .yottadb in sr_port/dse.hlp\n\n* This was missed out in a prior commit.","shortMessageHtmlLink":"[#887] [V70003] Fix .fis-gtm occurrences to .yottadb in sr_port/dse.hlp"}},{"before":"7a1bf879d833d99bdc90b2f41bb76f3aefa19d4f","after":"ba16bd851c91860f27d93c5163b5cd8fcc010e29","ref":"refs/heads/master","pushedAt":"2024-03-29T15:34:13.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#887] [V70003] Regenerate GTMDefinedTypesInit*.m for sr_x86_64, sr_aarch64 and sr_armv7l","shortMessageHtmlLink":"[#887] [V70003] Regenerate GTMDefinedTypesInit*.m for sr_x86_64, sr_a…"}},{"before":"5c9253818abdf4318dd27479578d0cc424492d6a","after":"7a1bf879d833d99bdc90b2f41bb76f3aefa19d4f","ref":"refs/heads/master","pushedAt":"2024-03-29T13:13:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[Pipeline] Add test suite v70002 to pipeline","shortMessageHtmlLink":"[Pipeline] Add test suite v70002 to pipeline"}},{"before":"3d5dd0cde9470072a75924f4b9ed7b4363ba3f5c","after":"5c9253818abdf4318dd27479578d0cc424492d6a","ref":"refs/heads/master","pushedAt":"2024-03-26T14:38:08.000Z","pushType":"push","commitsCount":17,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#863] [V70002] Fix incorrect control character number in CTRAP error message\n\n* Below is pasted from https://gitlab.com/YottaDB/DB/YDBTest/-/merge_requests/1877#note_1788676861\n\n _The test fails on GT.M V7.0-002 with this regression:_\n\n ```diff\n < %GTM-E-CTRAP, Character trap $C(1) encountered\n ---\n > %GTM-E-CTRAP, Character trap $C(0) encountered\n ```\n\n _It's supposed to say that `$C(1)` was encountered, but it says instead `$C(0)` is._\n\n* This is a regression in GT.M V7.0-002. The function `ctrap_set()` is passed a `ob_char` parameter.\n This logic was changed in V7.0-002 to invoke `SAVE_XFER_QUEUE_ENTRY()` in more cases than before.\n But in those cases, the `ob_char` parameter needs to be passed to the macro too so it gets\n saved there as the `ctrap` outofband character and gets printed as part of the `CTRAP` error later.\n\n* This is taken care of in this commit. With that change, the above test correctly displays `$C(1)`\n as the `CTRAP` character.","shortMessageHtmlLink":"[#863] [V70002] Fix incorrect control character number in CTRAP error…"}},{"before":"c974f8cb39d780d6fa223cbc3f5669e4fac38fab","after":"3d5dd0cde9470072a75924f4b9ed7b4363ba3f5c","ref":"refs/heads/master","pushedAt":"2024-03-20T02:46:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[Pipeline] Fix Posix build failure in build-test stage\n\nE.g. in https://gitlab.com/shabiel/YDB/-/jobs/6422923802\n\n```\n20.02 mkdir -p /tmp/plugin-build/posix\n20.02 mkdir -p /tmp/plugin-build/posix\n20.02 mkdir -p /tmp/plugin-build/posix-build\n20.02 mkdir -p /tmp/plugin-build/posix-build\n20.02 git clone https://gitlab.com/YottaDB/Util/YDBPosix.git /tmp/plugin-build/posix\n20.02 git clone https://gitlab.com/YottaDB/Util/YDBPosix.git /tmp/plugin-build/posix\n20.03 Cloning into '/tmp/plugin-build/posix'...\n21.76 cd /tmp/plugin-build/posix-build\n21.76 cd /tmp/plugin-build/posix-build\n21.76 cmake /tmp/plugin-build/posix && make && make install\n21.76 cmake /tmp/plugin-build/posix\n23.32 [ 11%] Creating directories for 'ydbcmake-populate'\n23.32 [ 22%] Performing download step (git clone) for 'ydbcmake-populate'\n23.32 Cloning into 'ydbcmake-src'...\n23.32 fatal: reference is not a tree: e980b310b464c43d98a9731f126bdc6375b3fe1e\n23.32 CMake Error at ydbcmake-subbuild/ydbcmake-populate-prefix/tmp/ydbcmake-populate-gitclone.cmake:49 (message):\n23.32 Failed to checkout tag: 'e980b310b464c43d98a9731f126bdc6375b3fe1e'\n23.32\n23.32\n23.32 gmake[2]: *** [CMakeFiles/ydbcmake-populate.dir/build.make:102: ydbcmake-populate-prefix/src/ydbcmake-populate-stamp/ydbcmake-populate-download] Error 1\n23.32 gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/ydbcmake-populate.dir/all] Error 2\n23.32 gmake: *** [Makefile:91: all] Error 2\n23.32\n23.32 CMake Error at /usr/share/cmake-3.25/Modules/FetchContent.cmake:1616 (message):\n23.32 Build step for ydbcmake failed: 2\n23.32 Call Stack (most recent call first):\n23.32 /usr/share/cmake-3.25/Modules/FetchContent.cmake:1756:EVAL:2 (__FetchContent_directPopulate)\n23.32 /usr/share/cmake-3.25/Modules/FetchContent.cmake:1756 (cmake_language)\n23.32 /usr/share/cmake-3.25/Modules/FetchContent.cmake:1970 (FetchContent_Populate)\n23.32 CMakeLists.txt:23 (FetchContent_MakeAvailable)\n23.32\n23.32\n23.32 -- Configuring incomplete, errors occurred!\n23.33 cd -\n23.33 cd -\n23.33 rm -r /tmp/plugin-build\n23.33 rm -r /tmp/plugin-build\n```\n\nThis is due to GIT_DIR in `Dockerfile-test` applying to more than\nYottaDB. When the Posix plugin does some git steps, it uses GIT_DIR and\nfails.\n\nFor this build, we don't use GIT_DIR, as that's only needed for doing an\nout of tree build for YottaDB. In the script\n`/usr/library/gtm_test/T999/docker/build_and_install_yottadb.csh`, we\ndon't do any out of tree builds for YottaDB.","shortMessageHtmlLink":"[Pipeline] Fix Posix build failure in build-test stage"}},{"before":"84ddef9f14de69b742d2b88fd049e12ec5eef94d","after":"c974f8cb39d780d6fa223cbc3f5669e4fac38fab","ref":"refs/heads/master","pushedAt":"2024-03-19T03:22:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[Pipeline] Add test suite r202 to pipeline","shortMessageHtmlLink":"[Pipeline] Add test suite r202 to pipeline"}},{"before":"18890ad275840c078ed50437e708daf9ac8e8d7f","after":"84ddef9f14de69b742d2b88fd049e12ec5eef94d","ref":"refs/heads/master","pushedAt":"2024-03-17T08:10:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[#1065][RL] Multiple signals to a process in readline mode causes loss of stack\n\nIssue\n-----\nIf multiple signals are received that the YottaDB readline code handles\n(currently CTRL-C, MUPIP INTRPT, and timers), the previously received\nsignal's code will never complete as a siglongjmp deletes the stack\nreturning control to readline.\n\nAn example will help illustrate:\n\n- sigsetjmp is only run once, recording a stack level (e.g. 7).\n- Signal 1 is received. Now at running a higher stack level (e.g. 10).\n- Signal 2 is received. Now at running a yet higher stack level (e.g.\n 13).\n- When 13 does all the work and goes back to 11 (base frame for Signal\n 2), it runs siglongjmp and goes back to stack level 7.\n- The code on frame 10 never finished running, possibly leading to\n database problems.\n\nThis was only seen in a heavy-weight test.\n\nSolution\n--------\nAdd readline_signal_count variable to keep track of the number of\nsignals received and only run siglongjmp if we are done with the last\nsignal.\n\nTesting\n-------\nTest v52000/D9G12002636 originally showed the issue. Whitebox test\nWBTEST_YDB_RLSIGLONGJMP exercised by r202/rlsiglongjmp-ydb1065 tests\nthis now. White box WBTEST_YDB_RLSIGLONGJMP slows down processing of\ntimers to allow the conditions for this error to occur: multiple signals\non top of each other in the stack.","shortMessageHtmlLink":"[#1065][RL] Multiple signals to a process in readline mode causes los…"}},{"before":"6095424a462695097bb8baa65aaa22bd29ca1acd","after":"18890ad275840c078ed50437e708daf9ac8e8d7f","ref":"refs/heads/master","pushedAt":"2024-03-06T14:21:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"Fix build failure on slow ARMV6L by bumping $ztimeout from 30 to 900 seconds in sr_port/msg.m\n\nBackground\n----------\n* While building YottaDB on a slow ARMV6L system, we saw a failure with the following symptoms.\n\n ```\n 2425 [ 91%] Generating gennotused/merrors_ctl.c, gennotused/merrors_ansi.h\n 2426 # msg.m took longer than expected\n\n 6133 +181^msg ($ZTIMEOUT)\n 6134 +179^msg:17c5714b20180491bc901c58606d1ae4\n 6135 +136^msg:17c5714b20180491bc901c58606d1ae4\n 6136 CMake Error at /Distrib/YottaDB/V999_R201/sr_unix/mumps.cmake:43 (message):\n 6137 Command failed with\n 6139 result ='1'\n ```\n\nIssue\n-----\n* Line 2426 above has the actual error which is that `msg.m took longer than expected`.\n\n* As part of GT.M V7.0-001 (merged into YottaDB in 5ae98ef3), the following line was added.\n\n **sr_port/msg.m**\n ```m\n 26 ; On the slowest server, this routine took less than half a second. So, there is no need to wait for more than 30 seconds.\n 27 Set $ztimeout=\"30:use $principal write \"\"# msg.m took longer than expected\"\",! zshow \"\"*\"\" zhalt 1\"\n ```\n\n* And it is this `$ztimeout` setting of 30 seconds that was exceeded as can be seen in the `$ZTIMEOUT`\n in line 6133 above.\n\nFix\n---\n* To account for really slow systems, this timeout is increased from 30 seconds to 900 seconds\n (15 minutes) in this commit.","shortMessageHtmlLink":"Fix build failure on slow ARMV6L by bumping $ztimeout from 30 to 900 …"}},{"before":"7b2c09f41e1742f202c16dd70dad29a5c97fcbf4","after":"6095424a462695097bb8baa65aaa22bd29ca1acd","ref":"refs/heads/master","pushedAt":"2024-02-29T11:04:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nars1","name":"Narayanan Iyer","path":"/nars1","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28790583?s=80&v=4"},"commit":{"message":"[DEBUG-ONLY] Add asserts that CURRSOCKOFR error is impossible\n\nBackground\n----------\nBelow is pasted from https://gitlab.com/YottaDB/DB/YDBTest/-/issues/538#note_1791404905\n\n**CURRSOCKOFR**\n\nAfter going through the code for a bit, I came to the conclusion that this error is not possible to\nbe reached normally. If ever that code path is reached, it is an out-of-design situation. I do see an\n`assert(FALSE)` in the code path in `iosocket_open.c` and `iosocket_use.c` but don't see it in other\nplaces where `ERR_CURRSOCKOFR` error is issued. I suspect that is just a mistake and that all places\nwhere it is issued should have an `assert(FALSE)` before it. I will take care of that coding change\nseparately. So this does not need to be tested.\n\nFix\n---\n* All code paths that issue a `ERR_CURRSOCKOFR` error are modified to have an `assert(FALSE);` before\n the error is issued. This way we will be alerted in case this ever happens in real life in a Debug\n build.","shortMessageHtmlLink":"[DEBUG-ONLY] Add asserts that CURRSOCKOFR error is impossible"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAESQEamwA","startCursor":null,"endCursor":null}},"title":"Activity · YottaDB/YDB"}