When does a MySQL session end?
To answer your questions:


Session ends when session (with mysql) ends and not when stored procedure ends! So the setting of group concat you did appears correct.


You may want to refer about statement caching and local variables scopes in SP. 



I simulated your scenario and it worked well for me!

MySQL Version: 5.6.24-72.2-log

mysql&gt; DELIMITER $$
mysql&gt; DROP PROCEDURE IF EXISTS session_test $$
Query OK, 0 rows affected (0.01 sec)

mysql&gt; CREATE PROCEDURE session_test (INOUT str TEXT)
    -&gt; BEGIN
    -&gt; show session variables like 'group_concat_max_len';
    -&gt; set session group_concat_max_len = 10000;
    -&gt; show session variables like 'group_concat_max_len';
    -&gt; select group_concat(ts1) into str from t1;
    -&gt; END $$
Query OK, 0 rows affected (0.00 sec)

mysql&gt; DELIMITER ;
mysql&gt; call session_test(@myvar);
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 10000 |
+----------------------+-------+
1 row in set (0.01 sec)

+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 10000 |
+----------------------+-------+
1 row in set (0.01 sec)

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql&gt; select length(@myvar);
+----------------+
| length(@myvar) |
+----------------+
|          10000 |
+----------------+
1 row in set (0.00 sec)

mysql&gt; show warnings;
+---------+------+-----------------------------------+
| Level   | Code | Message                           |
+---------+------+-----------------------------------+
| Warning | 1260 | Row 501 was cut by GROUP_CONCAT() |
+---------+------+-----------------------------------+
1 row in set (0.00 sec)

mysql&gt; show session variables like 'group_concat_max_len';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 10000 |
+----------------------+-------+
1 row in set (0.00 sec)


You see the last warning cause my group concat length went beyond 10K but that's OK!


You're not doing anything wrong with the variable as such it appears fine to me! 


Are you sure you have group concat length of 10k? Please try to exec the select statement from procedure.